first commit
Some checks failed
Code quality checks / biome (push) Failing after 11s

This commit is contained in:
creations 2025-06-10 13:42:39 -04:00
commit 421043c9b5
Signed by: creations
GPG key ID: 8F553AA4320FC711
67 changed files with 3455 additions and 0 deletions

57
src/routes/user/logout.ts Normal file
View file

@ -0,0 +1,57 @@
import { echo } from "@atums/echo";
import { cookieService, sessionManager } from "#lib/auth";
import type { BaseResponse, ExtendedRequest, RouteDef } from "#types/server";
interface LogoutResponse extends BaseResponse {}
const routeDef: RouteDef = {
method: ["POST", "DELETE"],
accepts: "*/*",
returns: "application/json",
};
async function handler(request: ExtendedRequest): Promise<Response> {
try {
const session = await sessionManager.getSession(request);
if (!session) {
const response: LogoutResponse = {
code: 401,
success: false,
error: "Not authenticated",
};
return Response.json(response, { status: 401 });
}
await sessionManager.invalidateSession(request);
const clearCookie = cookieService.clearCookie();
const response: LogoutResponse = {
code: 200,
success: true,
message: "Logged out successfully",
};
return Response.json(response, {
status: 200,
headers: {
"Set-Cookie": clearCookie,
},
});
} catch (error) {
echo.error({
message: "Error during user logout",
error,
});
const response: LogoutResponse = {
code: 500,
success: false,
error: "Internal server error",
};
return Response.json(response, { status: 500 });
}
}
export { handler, routeDef };