// routes/auth/logout.ts import { deleteCookie, getCookies } from "$std/http/cookie.ts"; import { getUserTokens } from "../../services/userService.ts"; import { define } from "../../utils.ts"; const redirectHome = Deno.env.get("REDIRECT_HOME")!; export const handler = define.handlers({ async GET(ctx) { const sessionData = ctx.state.data; const userId = sessionData?.user_id; if (userId) { const tokens = await getUserTokens(userId); if (tokens && tokens.access_token) { try { const response = await fetch( "https://graph.microsoft.com/v1.0/me/revokeSignInSessions", { method: "POST", headers: { "Authorization": `Bearer ${tokens.access_token}`, }, }, ); //const data = await response.text(); } catch (e) { console.error("Failed to revoke Graph sessions:", e); } } } const response = new Response("", { status: 302, headers: { "Location": "/", }, }); deleteCookie(response.headers, "xx_state_id", { path: "/" }); deleteCookie(response.headers, "session", { path: "/" }); return response; }, async POST(ctx) { const logoutUrl = `https://cyberhybridhub.ciamlogin.com/6ce6a7c9-9909-47b6-b459-bf607fa4d198/oauth2/v2.0/logout?post_logout_redirect_uri=${redirectHome}/auth/logout`; return new Response("", { status: 302, headers: { "Location": logoutUrl, }, }); }, });