diff --git a/src/modules/auth/controller/logout.controller.ts b/src/modules/auth/controller/logout.controller.ts index 1fab37a..9f9c33c 100644 --- a/src/modules/auth/controller/logout.controller.ts +++ b/src/modules/auth/controller/logout.controller.ts @@ -11,13 +11,16 @@ import { logoutService } from "../services/logout.service"; export const logoutController = async (ctx: Context) => { try { + // Get the user cookie from the request, if not found, return an error const userCookie = getCookie(ctx); if (!userCookie || !userCookie.auth_token) { return returnErrorResponse(ctx.set, 401, "You're not logged in yet"); } + // Call the logout service to clear the user session const clearSession = logoutService(userCookie.auth_token); + // Clear the auth cookie from the user session clearCookies(ctx.set, [COOKIE_KEYS.AUTH]); return returnWriteResponse( ctx.set, @@ -25,6 +28,8 @@ export const logoutController = async (ctx: Context) => { "Successfully logged out", clearSession ); + + // If there's an error during the logout process, handle it } catch (error) { return mainErrorHandler(ctx.set, error); } diff --git a/src/modules/auth/services/logout.service.ts b/src/modules/auth/services/logout.service.ts index 2a2c33c..18f7170 100644 --- a/src/modules/auth/services/logout.service.ts +++ b/src/modules/auth/services/logout.service.ts @@ -4,11 +4,15 @@ import { deleteUserSessionInCacheAndDBService } from "../../userSession/services export const logoutService = async (userCookie: string) => { try { + // Decode the JWT token to get the user session const jwtToken = jwtDecode(userCookie); + + // Delete the user session from cache and database const deleteUserSessionInCacheAndDB = deleteUserSessionInCacheAndDBService(jwtToken); - return deleteUserSessionInCacheAndDB; + + // If the session was not found in the cache or database, throw an error } catch (error) { ErrorForwarder(error, 500, "Logout service had encountered error"); } diff --git a/src/modules/userSession/services/deleteUserSessionInCacheAndDB.service.ts b/src/modules/userSession/services/deleteUserSessionInCacheAndDB.service.ts index df968f4..6b686e3 100644 --- a/src/modules/userSession/services/deleteUserSessionInCacheAndDB.service.ts +++ b/src/modules/userSession/services/deleteUserSessionInCacheAndDB.service.ts @@ -7,14 +7,19 @@ export const deleteUserSessionInCacheAndDBService = async ( jwtToken: JWTAuthToken ) => { try { + // Construct the userId and sessionId from the JWT token const userId = jwtToken.userId; const sessionId = jwtToken.id; + // Delete the user session from cache and database await deleteUserSessionFromCacheRepo(userId, sessionId); const deleteUserSessionFromDB = await deleteUserSessionFromDBRepo( sessionId ); + return deleteUserSessionFromDB; + + // If the session was not found in the cache or database, throw an error } catch (error) { ErrorForwarder( error,