import { echo } from "@atums/echo"; import { errorMessages, httpStatus, successMessages, } from "#environment/constants"; import { cookieService, sessionManager } from "#lib/auth"; import type { ExtendedRequest, LogoutResponse, RouteDef } from "#types/server"; const routeDef: RouteDef = { method: ["POST", "DELETE"], accepts: "*/*", returns: "application/json", }; async function handler(request: ExtendedRequest): Promise { try { await sessionManager.invalidateSession(request); const clearCookie = cookieService.clearCookie(); const response: LogoutResponse = { code: httpStatus.OK, success: true, message: successMessages.LOGOUT_SUCCESSFUL, }; return Response.json(response, { status: httpStatus.OK, headers: { "Set-Cookie": clearCookie, }, }); } catch (error) { echo.error({ message: "Error during user logout", error, }); const response: LogoutResponse = { code: httpStatus.INTERNAL_SERVER_ERROR, success: false, error: errorMessages.INTERNAL_SERVER_ERROR, }; return Response.json(response, { status: httpStatus.INTERNAL_SERVER_ERROR, }); } } export { handler, routeDef };