mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from wtforms import ValidationError
|
|
from datetime import datetime
|
|
from app.main.encryption import check_hash
|
|
|
|
|
|
class Blacklist(object):
|
|
def __init__(self, message=None):
|
|
if not message:
|
|
message = 'Password is blacklisted.'
|
|
self.message = message
|
|
|
|
def __call__(self, form, field):
|
|
if field.data in ['password1234', 'passw0rd1234']:
|
|
raise ValidationError(self.message)
|
|
|
|
|
|
class ValidateUserCodes(object):
|
|
def __init__(self,
|
|
expiry_msg='Code has expired',
|
|
invalid_msg='Code does not match',
|
|
code_type=None):
|
|
self.expiry_msg = expiry_msg
|
|
self.invalid_msg = invalid_msg
|
|
self.code_type = code_type
|
|
|
|
def __call__(self, form, field):
|
|
# TODO would be great to do this sql query but
|
|
# not couple those parts of the code.
|
|
user_codes = getattr(form, 'user_codes', [])
|
|
valid_code = False
|
|
for code in user_codes:
|
|
if check_hash(field.data, code.code) and self.code_type == code.code_type:
|
|
if code.expiry_datetime <= datetime.now():
|
|
raise ValidationError(self.expiry_msg)
|
|
else:
|
|
# Valid code
|
|
valid_code = True
|
|
break
|
|
if not valid_code:
|
|
raise ValidationError(self.invalid_msg)
|