def create_confirm_email_code(user, new_email=None): if new_email: if not validate_email(new_email): raise InvalidEmailAddressException("Invalid email address: %s" % new_email) verification_code, unhashed = Credential.generate() code = EmailConfirmation.create( user=user, email_confirm=True, new_email=new_email, verification_code=verification_code ) return encode_public_private_token(code.code, unhashed)
def create_reset_password_email_code(email): try: user = User.get(User.email == email) except User.DoesNotExist: raise InvalidEmailAddressException("Email address was not found") if user.organization: raise InvalidEmailAddressException("Organizations can not have passwords") verification_code, unhashed = Credential.generate() code = EmailConfirmation.create(user=user, pw_reset=True, verification_code=verification_code) return encode_public_private_token(code.code, unhashed)
def test_validation_code(token_lifetime, time_since, initialized_db): user = create_user_noverify('foobar', '*****@*****.**', email_required=False) created = datetime.now() - convert_to_timedelta(time_since) verification_code, unhashed = Credential.generate() confirmation = EmailConfirmation.create(user=user, pw_reset=True, created=created, verification_code=verification_code) encoded = encode_public_private_token(confirmation.code, unhashed) with patch('data.model.config.app_config', {'USER_RECOVERY_TOKEN_LIFETIME': token_lifetime}): result = validate_reset_code(encoded) expect_success = convert_to_timedelta(token_lifetime) >= convert_to_timedelta(time_since) assert expect_success == (result is not None)