28 lines
840 B
TypeScript
28 lines
840 B
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
import { getRequestAuditContext, writeAuditTrail } from "@/lib/audit";
|
|
import { getSession, SESSION_COOKIE } from "@/lib/auth";
|
|
import { getRequestBaseUrl } from "@/lib/request-url";
|
|
|
|
export async function GET(request: NextRequest) {
|
|
const session = await getSession();
|
|
const { ipAddress, userAgent } = await getRequestAuditContext();
|
|
|
|
if (session) {
|
|
await writeAuditTrail({
|
|
tenantId: session.tenantId,
|
|
actorUserId: session.userId,
|
|
entityType: "user",
|
|
entityId: session.userId,
|
|
action: "user_logout",
|
|
metadata: { email: session.email },
|
|
ipAddress,
|
|
userAgent
|
|
});
|
|
}
|
|
|
|
const response = NextResponse.redirect(new URL("/login", getRequestBaseUrl(request)));
|
|
response.cookies.delete(SESSION_COOKIE);
|
|
return response;
|
|
}
|