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