gitdataai/admin/src/app/api/auth/logout/route.ts
ZhenYi 3773fdc780 feat(admin): add structured error logger for all API routes
Replace bare console.error() calls with logError() utility across all
47 API route handlers. logError() prints timestamp + context + message
+ stack trace + extra request data to stderr, and redacts sensitive
fields (password, token, secret, key, etc.) from logged objects.
2026-04-23 09:55:35 +08:00

41 lines
1.3 KiB
TypeScript

import { logError } from "@/lib/logger";
import { NextRequest, NextResponse } from "next/server";
import { logout, parseSessionCookie, loadAdminSession, buildClearCookieHeader } from "@/lib/auth";
import { createAuditLog } from "@/lib/log";
export const runtime = "nodejs";
export async function POST(req: NextRequest) {
try {
const cookieHeader = req.headers.get("cookie");
const sessionId = parseSessionCookie(cookieHeader);
if (sessionId) {
const session = await loadAdminSession(sessionId);
if (session) {
const ip = req.headers.get("x-forwarded-for") || req.headers.get("x-real-ip") || "unknown";
const ua = req.headers.get("user-agent") || "unknown";
await createAuditLog({
userId: session.userId,
username: session.username,
action: "logout",
resource: "auth",
result: "success",
ipAddress: ip,
userAgent: ua,
});
}
await logout(sessionId);
}
const response = NextResponse.json({ success: true });
response.headers.set("Set-Cookie", buildClearCookieHeader());
return response;
} catch (e) {
logError("Logout error:", e);
const response = NextResponse.json({ success: false });
response.headers.set("Set-Cookie", buildClearCookieHeader());
return response;
}
}