def post(self): """ Resource that signs in a user """ args = user_parser.parse_args() email = args['email'] username = args['username'] password = args['password'] if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 6: user = User.get_by_email(email) if user and user.check_password(password): token = user.encode_auth_token(user.id) result = { 'message': 'User has signed in successfully.', 'token': token.decode("utf-8"), 'userid': user.id } return result, 200 result = {'message': 'User does not exist or incorrect password.'} return result, 400 result = {'message': 'Wrong email or password'} return result, 400
def post(self): """ Post the user's reset email :return: """ args = user_parser.parse_args() recovery_email = args['email'] if re.match(r"[^@]+@[^@]+\.[^@]+", recovery_email): user = User.get_by_email(recovery_email) if user: token = user.encode_recovery_token(recovery_email) recovery_token = token.decode("utf-8") recover_url = api.url_for(UserPasswordResetResource, token=token, _external=True) try: msg = Message("Reset password Token", sender="*****@*****.**", recipients=[recovery_email]) msg.html = "<h3> Hi there, </h3>" \ "<hr/>" \ "<p>Click on this link to reset your password" \ "Recover url: " '<p>''<strong>' + recover_url +'</strong>''</p>' \ '<p> You will not be able to use this url in the next 24 Hours.' \ 'Please reset your password before then.</p>' \ "<hr/>" \ "<h5>Yummy recipes password.</h5>" with current_app.app_context(): mail.send(msg) result = {'message': 'Recovery email has been sent.'} return result, 200 except Exception as e: return {"error": str(e)}, 400 result = { 'message': 'User with email {} does not exist.'.format(recovery_email) } return result, 400 result = {'message': 'Wrong email entered.'} return result, 400
def put(self, token): """ Get the user's reset email :return: """ args = user_parser.parse_args() password = args['password'] if len(password) > 6: email = User.decode_auth_token(token) user = User.get_by_email(email) if user: try: user.update(**args) except IndexError: result = {'message': 'Server error on resetting password.'} return result, 500 result = {'message': 'Password has been reset successfully.'} return result, 200 result = {'message': 'User does not exist anymore.'} return result, 400 result = {'message': 'Password should not be less than 6 characters.'} return result, 400