def post(self): """Allows a user to enter a code provided when they reset their password to update their password.""" json_data = request.get_json(force=True) print(f"Reset pwd code: {json_data}") email = json_data['email'] code = json_data['code'] password = json_data['password'] try: u = Cognito(cognitoUserPoolId, cognitoUserPoolClientId, awsRegion, username=email) u.confirm_forgot_password(code, password=password) return ReturnDocument(email, "success").asdict() except ClientError as err: return ReturnDocument(err.__str__(), "error").asdict()
def confirm_forgot_password(username, confirmation_code, new_password): if not username: raise ValidationError("error.confirm_forgot_password.invalid_user") if not confirmation_code: raise ValidationError( "error.confirm_forgot_password.invalid_confirmation_code") if not new_password: raise ValidationError( "error.confirm_forgot_password.invalid_new_password") user_cognito = Cognito(cognito_userpool_id, cognito_app_client_id, username=username) try: user_cognito.confirm_forgot_password(confirmation_code, new_password) except Exception as e: if "Password does not conform to policy" in str(e): raise ValidationError( "error.confirm_forgot_password.invalid_new_password") else: raise ValidationError("error.confirm_forgot_password.failed")
#!/usr/bin/env python3 from common.config import config from common.colourprint import Printer from warrant import Cognito props = config() cognito = Cognito(props['USER_POOL_ID'], props['CLIENT_ID'], user_pool_region='eu-west-1', username=props['USERNAME']) print('Resetting password for {}'.format(props['USERNAME'])) cognito.confirm_forgot_password( confirmation_code=props['VERIFICATION_CODE'], password=props['PASSWORD'] ) Printer.success()