Files
popiart-server/web/app/api/auth/logout/route.ts
T

44 lines
928 B
TypeScript

import { NextResponse } from "next/server";
import { cookies } from "next/headers";
import {
SESSION_COOKIE_NAME,
popiartFetchEnvelope,
} from "@/lib/popiart-api";
export async function POST() {
const cookieStore = await cookies();
const token = cookieStore.get(SESSION_COOKIE_NAME)?.value;
try {
if (token) {
await popiartFetchEnvelope<{ logged_out: boolean }>("/auth/logout", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
},
});
}
} catch {
// Clear the local session even if the upstream logout call fails.
}
const response = NextResponse.json({
ok: true,
data: {
logged_out: true,
},
});
response.cookies.set({
name: SESSION_COOKIE_NAME,
value: "",
httpOnly: true,
sameSite: "lax",
secure: process.env.NODE_ENV === "production",
path: "/",
maxAge: 0,
});
return response;
}