mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 07:21:13 -05:00
All tests working, second time around.
This commit is contained in:
@@ -1,9 +1,15 @@
|
||||
from datetime import datetime
|
||||
import random
|
||||
from datetime import (datetime, timedelta)
|
||||
from . import DAOException
|
||||
from sqlalchemy.orm import load_only
|
||||
|
||||
from app import db
|
||||
from app.models import User
|
||||
from app.models import (User, VerifyCode)
|
||||
from app.encryption import hashpw
|
||||
|
||||
|
||||
def create_secret_code():
|
||||
return ''.join(map(str, random.sample(range(9), 5)))
|
||||
|
||||
|
||||
def save_model_user(usr, update_dict={}):
|
||||
@@ -16,6 +22,37 @@ def save_model_user(usr, update_dict={}):
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def create_user_code(user, code, code_type):
|
||||
verify_code = VerifyCode(code_type=code_type,
|
||||
expiry_datetime=datetime.now() + timedelta(hours=1),
|
||||
user=user)
|
||||
verify_code.code = code
|
||||
db.session.add(verify_code)
|
||||
db.session.commit()
|
||||
return verify_code
|
||||
|
||||
|
||||
def get_user_code(user, code, code_type):
|
||||
# Get the most recent codes to try and reduce the
|
||||
# time searching for the correct code.
|
||||
codes = VerifyCode.query.filter_by(
|
||||
user=user, code_type=code_type).order_by(
|
||||
VerifyCode.created_at.desc())
|
||||
retval = None
|
||||
for x in codes:
|
||||
if x.check_code(code):
|
||||
retval = x
|
||||
break
|
||||
return retval
|
||||
|
||||
|
||||
def use_user_code(id):
|
||||
verify_code = VerifyCode.query.get(id)
|
||||
verify_code.code_used = True
|
||||
db.session.add(verify_code)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def delete_model_user(user):
|
||||
db.session.delete(user)
|
||||
db.session.commit()
|
||||
|
||||
Reference in New Issue
Block a user