def post(self): #Handle POST request for this view. Url ---> /auth/logout """Endpoint to logout a user""" try: # get auth token auth_header = request.headers.get('Authorization') auth_token = None if auth_header and len(auth_header.split(" ")) > 1: auth_token = auth_header.split(" ")[1] if auth_token is None: return make_response( jsonify({ "message": "Token required", "status": "failure" })), 403 if auth_token is not None: #decode the token that was stored after login to extract the user id user_id = User.get_token_user_id(auth_token) if user_id == "Expired token. Please login to get a new token": #First check if token exists in the Token table token = Token.query.filter_by(token=auth_token).first() # Delete token from the logged in user's table if it is in the logged in user table if token is not None: Token.delete_token(token) return make_response( jsonify({ "message": " Token Expired. Please login to get a new one", "status": "failure" })), 403 if user_id == "Invalid token. Please register or login": return make_response( jsonify({ "message": " Invalid Token. Please login to get a new one", "status": "failure" })), 403 #check if token exists in the Token table token = Token.query.filter_by(token=auth_token).first() #Use the user ID that was decoded from the token to extract # the user so u can change the logged in flag to 0 user = User.query.filter_by(id=int(user_id)).first() #check if the token is stored in the table with tokens if token is not None: #remove the token from the token table Token.delete_token(token) #set the user logged in flag to 0 user.logged_in = 0 user.save() # create the response response = { "message": 'Logout Successful', "status": "success" } # send the response return make_response(jsonify(response)), 201 else: #log out user if not already logged out response = { "message": 'No need you are already logged out', "status": "success" } #make and send the response return make_response(jsonify(response)), 303 except Exception as e: response = { "message": " Internal server error " + str(e), "status": "failure" } # Return a server error using the HTTP Error Code 500 (Internal Server Error) return make_response(jsonify(response)), 500