2016-01-04 14:00:39 +00:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
2016-01-05 17:52:09 +00:00
|
|
|
from sqlalchemy.orm import load_only
|
|
|
|
|
|
2015-11-30 14:32:58 +00:00
|
|
|
from app import db, login_manager
|
2015-11-30 11:21:51 +00:00
|
|
|
from app.models import User
|
2015-11-30 15:33:40 +00:00
|
|
|
from app.main.encryption import hashpw
|
2015-11-25 15:29:12 +00:00
|
|
|
|
2016-01-20 15:13:15 +00:00
|
|
|
from app import user_api_client
|
|
|
|
|
|
2015-11-25 15:29:12 +00:00
|
|
|
|
2015-11-30 14:32:58 +00:00
|
|
|
@login_manager.user_loader
|
|
|
|
|
def load_user(user_id):
|
|
|
|
|
return get_user_by_id(user_id)
|
|
|
|
|
|
|
|
|
|
|
2015-11-25 15:29:12 +00:00
|
|
|
def insert_user(user):
|
2015-11-30 15:33:40 +00:00
|
|
|
user.password = hashpw(user.password)
|
2015-11-25 15:29:12 +00:00
|
|
|
db.session.add(user)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
|
2016-01-05 12:41:20 +00:00
|
|
|
# TODO Would be better to have a generic get and update for user
|
|
|
|
|
# something that replicates the sql functionality.
|
2015-11-25 15:29:12 +00:00
|
|
|
def get_user_by_id(id):
|
2016-01-20 15:13:15 +00:00
|
|
|
return user_api_client.get_user(id)
|
2015-11-26 09:59:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_all_users():
|
2016-01-21 11:33:53 +00:00
|
|
|
return user_api_client.get_users()
|
2015-11-27 09:47:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_by_email(email_address):
|
2016-01-21 11:33:53 +00:00
|
|
|
return user_api_client.get_user_by_email(email_address)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def verify_password(user, password):
|
|
|
|
|
return user_api_client.verify_password(user, password)
|
2015-11-30 16:33:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def increment_failed_login_count(id):
|
2016-01-21 12:31:09 +00:00
|
|
|
user = get_user_by_id(id)
|
2015-11-30 16:33:45 +00:00
|
|
|
user.failed_login_count += 1
|
2015-12-07 16:08:30 +00:00
|
|
|
|
|
|
|
|
|
2016-01-20 15:13:15 +00:00
|
|
|
def activate_user(user):
|
2015-12-07 16:08:30 +00:00
|
|
|
user.state = 'active'
|
2016-01-20 15:13:15 +00:00
|
|
|
return user_api_client.update_user(user)
|
2015-12-15 15:35:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_email_address(id, email_address):
|
|
|
|
|
user = get_user_by_id(id)
|
|
|
|
|
user.email_address = email_address
|
|
|
|
|
db.session.add(user)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_mobile_number(id, mobile_number):
|
|
|
|
|
user = get_user_by_id(id)
|
|
|
|
|
user.mobile_number = mobile_number
|
|
|
|
|
db.session.add(user)
|
|
|
|
|
db.session.commit()
|
2016-01-04 14:00:39 +00:00
|
|
|
|
|
|
|
|
|
2016-01-08 15:12:14 +00:00
|
|
|
def update_password(user, password):
|
|
|
|
|
user.password = hashpw(password)
|
|
|
|
|
user.password_changed_at = datetime.now()
|
2016-01-11 12:06:52 +00:00
|
|
|
user.state = 'active'
|
2016-01-08 15:12:14 +00:00
|
|
|
db.session.add(user)
|
|
|
|
|
db.session.commit()
|
2016-01-05 17:52:09 +00:00
|
|
|
|
|
|
|
|
|
2016-01-11 12:06:52 +00:00
|
|
|
def request_password_reset(email):
|
|
|
|
|
user = get_user_by_email(email)
|
|
|
|
|
user.state = 'request_password_reset'
|
|
|
|
|
db.session.add(user)
|
|
|
|
|
db.session.commit()
|