backend/src/routes/user/logout.ts
creations 1e6003079b
All checks were successful
Code quality checks / biome (push) Successful in 11s
move validationResult to value instead, add create, delete, list, info route for guilds
2025-06-18 18:43:47 -04:00

51 lines
1.1 KiB
TypeScript

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<Response> {
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 };