All checks were successful
Code quality checks / biome (push) Successful in 11s
51 lines
1.1 KiB
TypeScript
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 };
|