51 lines
952 B
TypeScript
51 lines
952 B
TypeScript
import { Elysia, t } from "elysia";
|
|
import { deactivateSession } from "@backend/lib/auth";
|
|
|
|
export const logoutHandler = new Elysia({ prefix: "/auth" })
|
|
.delete(
|
|
"/session",
|
|
async ({ set, cookie }) => {
|
|
const sessionId = cookie.sessionId?.value;
|
|
|
|
if (!sessionId) {
|
|
set.status = 401;
|
|
return { message: "Not authenticated." };
|
|
}
|
|
|
|
await deactivateSession(sessionId as string);
|
|
cookie.sessionId.remove();
|
|
|
|
return { message: "Successfully logged out." };
|
|
},
|
|
{
|
|
response: {
|
|
200: t.Object({
|
|
message: t.String()
|
|
}),
|
|
401: t.Object({
|
|
message: t.String()
|
|
})
|
|
}
|
|
}
|
|
)
|
|
.delete(
|
|
"/session/:id",
|
|
async ({ params }) => {
|
|
const sessionId = params.id;
|
|
|
|
await deactivateSession(sessionId as string);
|
|
|
|
return { message: "Successfully logged out." };
|
|
},
|
|
{
|
|
response: {
|
|
200: t.Object({
|
|
message: t.String()
|
|
}),
|
|
401: t.Object({
|
|
message: t.String()
|
|
})
|
|
}
|
|
}
|
|
);
|