29 lines
972 B
TypeScript
29 lines
972 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { cookies } from "next/headers";
|
|
import { getSessionCookieName } from "@/lib/server/auth";
|
|
import { logoutUser } from "@/lib/server/auth-service";
|
|
import { getRequestMeta } from "@/lib/server/request";
|
|
import { toErrorResponse } from "@/lib/server/errors";
|
|
|
|
export async function POST() {
|
|
const { requestId } = await getRequestMeta();
|
|
try {
|
|
const cookieStore = await cookies();
|
|
const token = cookieStore.get(getSessionCookieName())?.value;
|
|
if (token)
|
|
await logoutUser(token);
|
|
cookieStore.set(getSessionCookieName(), "", {
|
|
httpOnly: true,
|
|
sameSite: "lax",
|
|
secure: process.env.NODE_ENV === "production",
|
|
maxAge: 0,
|
|
path: "/"
|
|
});
|
|
|
|
return NextResponse.json({ requestId, request_id: requestId, ok: true });
|
|
} catch (e) {
|
|
const { status, body } = toErrorResponse(e, "POST /api/auth/logout", requestId);
|
|
return NextResponse.json(body, { status });
|
|
}
|
|
}
|