def post(self): data = AccountControllerParsers.userRegisterParser.parse_args() userDetails = AccountControllerParsers.userDetailsParser.parse_args( req=data) if not validate_email(userDetails.email): raise ValidationException( '{} is not a valid email'.format(userDetails.email), 'details.email') if len(data.password) < 5: raise ValidationException('Minimum length of password is 5', 'password') if not re.search("[A-Z]", data.password): raise ValidationException( 'Password must have one uppercase letter', 'password') if not re.search("[a-z]", data.password): raise ValidationException( 'Password must have one lowercase letter', 'password') if not re.search("[0-9]", data.password): raise ValidationException('Password must have one number', 'password') if not re.search("[^a-zA-Z0-9]", data.password): raise ValidationException( 'Password must have one special character', 'password') if data.password != data.confirmPassword: return errorMessage.invalidPasswordAndConfirmationPassword(), 400 currentUser = User.findUserByEmail(userDetails.email) if currentUser: return errorMessage.userAlreadyExist(userDetails.email), 400 newUser = User(imageId=userDetails.imageId, firstName=userDetails.firstName, lastName=userDetails.lastName, email=userDetails.email, password_hash=User.generateHashedPassword( data.password)) try: newUser.saveToDb() access_token = create_access_token(identity=newUser.id) return TokenResponseModel.userCreated(newUser.email, access_token), 201 except: return errorMessage.somethingWentWrong(), 500
def post(self): data = AccountControllerParsers.userLoginParser.parse_args() if not validate_email(data.email): raise ValidationException( '{} is not a valid email'.format(data.email), 'email') currentUser = User.findUserByEmail(data.email) if not currentUser: return errorMessage.userDoesNotExist(data.email), 404 if User.verifyPassword(data.password, currentUser.password_hash): accessToken = create_access_token(identity=currentUser.id) return TokenResponseModel.userLoggedId(currentUser.email, accessToken), 200 else: return errorMessage.wrongCredential(), 400