def decorated_function(*args, **kwargs): token = None if 'Authorization' in request.headers: auth_header = request.headers['Authorization'] try: token = auth_header.split(" ")[1] except IndexError: return make_response( jsonify({'message': 'Provide a valid auth token'}), 403) if not token: return make_response(jsonify({'message': 'Token is missing'}), 401) try: decode_response = User.decode_auth_token(token) current_user = User.query.filter_by(id=decode_response).first() if current_user: g.user = current_user else: return make_response( jsonify({ 'message': "Integrity credentials for provided token are lacking." }), 401) except: message = 'Invalid token' if isinstance(decode_response, str): message = decode_response return make_response( jsonify({ 'status': 'Failed', 'message': message }), 401) return f(current_user, *args, **kwargs)
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
def get(self): """ Try to logout a user using a token :return: """ args = parser.parse_args() auth_header = args['Authorization'] if auth_header: try: auth_token = auth_header.split(" ")[1] except IndexError: result = {'message': 'Provide a valid authentication token'} return result, 403 else: decoded_token_response = User.decode_auth_token(auth_token) if not isinstance(decoded_token_response, str): token = Token(auth_token) token.save() result = {'message': 'Successfully logged out'} return result, 200 result = {'message': decoded_token_response} return result, 401 result = {'message': 'Provide an authorization header'} return result, 403