import { SESSION_COOKIE_NAME } from "../auth/token"; import { request } from "../request"; import { redirect } from "../request/util"; import type { Call, Result, Route } from "../types"; const logoutHandler = async (call: Call): Promise => { // Extract token from cookie and invalidate the session const token = request.auth.extractToken(call.request); if (token) { await request.auth.logout(token); } // Clear the cookie and redirect to login const redirectResult = redirect("/login"); redirectResult.cookies = [ { name: SESSION_COOKIE_NAME, value: "", options: { httpOnly: true, secure: false, sameSite: "lax", maxAge: 0, path: "/", }, }, ]; return redirectResult; }; const logoutRoute: Route = { path: "/logout", methods: ["GET", "POST"], handler: logoutHandler, }; export { logoutRoute };