mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-16 20:49:00 -04:00
Working tests, hopefully all code changes done.
This commit is contained in:
@@ -1,32 +1,9 @@
|
||||
from random import randint
|
||||
from flask import url_for, current_app
|
||||
from itsdangerous import URLSafeTimedSerializer, SignatureExpired
|
||||
from app.main.dao import verify_codes_dao
|
||||
from app import notifications_api_client
|
||||
|
||||
|
||||
def create_verify_code():
|
||||
return ''.join(["%s" % randint(0, 9) for _ in range(0, 5)])
|
||||
|
||||
|
||||
def send_sms_code(user_id, mobile_number):
|
||||
sms_code = create_verify_code()
|
||||
verify_codes_dao.add_code(user_id=user_id, code=sms_code, code_type='sms')
|
||||
notifications_api_client.send_sms(mobile_number=mobile_number,
|
||||
message=sms_code)
|
||||
return sms_code
|
||||
|
||||
|
||||
def send_email_code(user_id, email):
|
||||
email_code = create_verify_code()
|
||||
verify_codes_dao.add_code(user_id=user_id, code=email_code, code_type='email')
|
||||
notifications_api_client.send_email(email_address=email,
|
||||
from_address='notify@digital.cabinet-office.gov.uk',
|
||||
message=email_code,
|
||||
subject='Verification code')
|
||||
return email_code
|
||||
|
||||
|
||||
def send_change_password_email(email):
|
||||
link_to_change_password = url_for('.new_password', token=generate_token(email), _external=True)
|
||||
notifications_api_client.send_email(email_address=email,
|
||||
|
||||
@@ -70,6 +70,25 @@ class UserApiClient(BaseAPIClient):
|
||||
return user[0]
|
||||
return None
|
||||
|
||||
def send_verify_code(self, user_id, code_type):
|
||||
data = {'code_type': code_type}
|
||||
endpoint = '/user/{}/code'.format(user_id)
|
||||
resp = self.post(endpoint, data=data)
|
||||
|
||||
def check_verify_code(self, user_id, code, code_type):
|
||||
data = {'code_type': code_type, 'code': code}
|
||||
endpoint = '/user/{}/verify/code'.format(user_id)
|
||||
try:
|
||||
resp = self.post(endpoint, data=data)
|
||||
return True, ''
|
||||
except HTTPError as e:
|
||||
if e.status_code == 400 or e.status_code == 404:
|
||||
if 'Code not found' in e.message:
|
||||
return False, 'Code not found'
|
||||
elif 'Code has expired' in e.message:
|
||||
return False, 'Code has expired'
|
||||
raise e
|
||||
|
||||
|
||||
class User(object):
|
||||
def __init__(self, fields, max_failed_login_count=3):
|
||||
@@ -85,14 +104,26 @@ class User(object):
|
||||
def name(self):
|
||||
return self.fields.get('name')
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self.fields['name'] = name
|
||||
|
||||
@property
|
||||
def email_address(self):
|
||||
return self.fields.get('email_address')
|
||||
|
||||
@email_address.setter
|
||||
def email_address(self, email_address):
|
||||
self.fields['email_address'] = email_address
|
||||
|
||||
@property
|
||||
def mobile_number(self):
|
||||
return self.fields.get('mobile_number')
|
||||
|
||||
@mobile_number.setter
|
||||
def mobile_number(self, mobile_number):
|
||||
self.fields['mobile_number'] = mobile_number
|
||||
|
||||
@property
|
||||
def password_changed_at(self):
|
||||
return self.fields.get('password_changed_at')
|
||||
@@ -130,3 +161,6 @@ class User(object):
|
||||
|
||||
def serialize(self):
|
||||
return self.fields
|
||||
|
||||
def set_password(self, pwd):
|
||||
self.fields['password'] = pwd
|
||||
|
||||
Reference in New Issue
Block a user