/**
* POST /api/auth/logout — `dwatch_session` cookie を削除する。
*
* ★このルートは認証が必要★(`isPublicPath()` に入れていない)。
* cookie を消すだけなので公開しても実害は薄いが、公開にする理由も無い。
* 未認証で叩けば proxy が 401 を返し、その時点で cookie は無効なので目的は達している。
*/
import { NextResponse } from "next/server";
import {
SESSION_COOKIE_NAME,
SESSION_COOKIE_OPTIONS,
} from "@/lib/auth/cookie";
import { withRequestId } from "@/lib/logger";
export async function POST(request: Request) {
return withRequestId(request, async () => {
const response = new NextResponse(null, { status: 204 });
// 発行時と同じ name / path / secure で消す(属性が違うと消えずに残る)。
// ★`delete()` は内部で Max-Age=0 を出すが、これは「削除」であって
// 「トークンに期限を付ける」ことではない(CLAUDE.md §7 の禁止事項に当たらない)★
response.cookies.delete({
name: SESSION_COOKIE_NAME,
path: SESSION_COOKIE_OPTIONS.path,
secure: SESSION_COOKIE_OPTIONS.secure,
httpOnly: SESSION_COOKIE_OPTIONS.httpOnly,
sameSite: SESSION_COOKIE_OPTIONS.sameSite,
});
return response;
});
}