From 3aaa14c98603752a1c45a07de271a8d13e31f92e Mon Sep 17 00:00:00 2001 From: Thastertyn Date: Sun, 5 May 2024 23:51:14 +0200 Subject: [PATCH] Cleanup in User code --- app/api/routes/user_routes.py | 34 ++++++++-------------------------- app/services/user_service.py | 13 ++++++++----- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/app/api/routes/user_routes.py b/app/api/routes/user_routes.py index af49961..d53b3f0 100644 --- a/app/api/routes/user_routes.py +++ b/app/api/routes/user_routes.py @@ -4,11 +4,12 @@ from flask import request, abort from flasgger import swag_from -from app.doc.user_swag import login_swagger, logout_swagger, delete_swagger +from app.doc.user_swag import login_swagger, logout_swagger, delete_swagger, register_swagger from app.services.user_service import UserService @bp_user.route('/register', methods=['POST']) +@swag_from(register_swagger) def register(): username = request.json.get('username') displayname = request.json.get('displayname') @@ -40,13 +41,9 @@ def login(): @jwt_required() def logout(): jwt = get_jwt() - - jti = jwt['jti'] - exp = jwt['exp'] - user_id = get_jwt_identity() - result, status_code = UserService.logout(jti, exp, user_id) + result, status_code = UserService.logout(jwt, user_id) return result, status_code @@ -62,10 +59,7 @@ def update_username(): result, status_code = UserService.update_username(user_id, new_username) jwt = get_jwt() - - jti = jwt['jti'] - exp = jwt['exp'] - UserService.logout(jti, exp, user_id) + UserService.logout(jwt, user_id) return result, status_code @@ -81,10 +75,7 @@ def update_displayname(): result, status_code = UserService.update_username(user_id, new_displayname) jwt = get_jwt() - - jti = jwt['jti'] - exp = jwt['exp'] - UserService.logout(jti, exp, user_id) + UserService.logout(jwt, user_id) return result, status_code @@ -100,10 +91,7 @@ def update_email(): result, status_code = UserService.update_email(username, new_mail) jwt = get_jwt() - - jti = jwt['jti'] - exp = jwt['exp'] - UserService.logout(jti, exp, username) + UserService.logout(jwt, username) return result, status_code @@ -120,10 +108,7 @@ def update_password(): result, status_code = UserService.update_password(username, new_password) jwt = get_jwt() - - jti = jwt['jti'] - exp = jwt['exp'] - UserService.logout(jti, exp, username) + UserService.logout(jwt, username) return result, status_code @@ -136,9 +121,6 @@ def delete_user(): result, status_code = UserService.delete_user(user_id) jwt = get_jwt() - - jti = jwt['jti'] - exp = jwt['exp'] - UserService.logout(jti, exp, user_id) + UserService.logout(jwt, user_id) return result, status_code \ No newline at end of file diff --git a/app/services/user_service.py b/app/services/user_service.py index 0e1bafd..0c56c22 100644 --- a/app/services/user_service.py +++ b/app/services/user_service.py @@ -62,7 +62,7 @@ class UserService: print(f"Error: {e}") return {"Failed": "Failed to insert into database. Username or email are likely in use already"}, 500 - send_mail("register", email) + UserService.__send_email("register", email=email) return {"Success": "User created successfully"}, 200 @@ -98,7 +98,7 @@ class UserService: token = create_access_token(identity=user_id, expires_delta=expire) - send_mail("login", email) + UserService.__send_email("login", email=email) return {"token": token}, 200 @@ -106,7 +106,7 @@ class UserService: return {"Failed": f"Failed to login. Error: {e}"}, 500 @staticmethod - def logout(jti, exp, user_id) -> Tuple[Union[dict, str], int]: + def logout(jwt_token, user_id) -> Tuple[Union[dict, str], int]: """ Logs out a user by invalidating the provided JWT. @@ -118,6 +118,9 @@ class UserService: :rtype: Tuple[Union[dict, str], int] """ + jti = jwt['jti'] + exp = jwt['exp'] + UserService.__invalidate_token(jti, exp) UserService.__send_email("logout", id=user_id) @@ -234,7 +237,7 @@ class UserService: cursor.execute("select email from user where username = %s", (username,)) result = cursor.fetchone() email = result['email'] - send_mail("logout", email) + send_mail(message, email) except Error as e: return {"Failed": f"Failed to fetch some data. Error: {e}"}, 500 @@ -246,7 +249,7 @@ class UserService: cursor.execute("select email from user where id = %s", (id,)) result = cursor.fetchone() email = result['email'] - send_mail("logout", email) + send_mail(message, email) except Error as e: return {"Failed": f"Failed to fetch some data. Error: {e}"}, 500