import { NextResponse } from "next/server";
import {
  ADMIN_COOKIE,
  requireAdmin,
  revokeAdminSession,
} from "@/lib/admin-auth";
import { logAdminActivity } from "@/lib/admin-activity";
import { requestMeta } from "@/lib/request-meta";

export async function POST(req: Request) {
  const meta = requestMeta(req);
  const admin = await requireAdmin();

  if (admin) {
    try {
      await revokeAdminSession(admin.sessionId);
    } catch (e) {
      console.error("revoke session failed", e);
    }
    await logAdminActivity({
      adminId: admin.id,
      username: admin.username,
      action: "logout",
      resource: "logout",
      outcome: "success",
      ip: meta.ip,
      userAgent: meta.userAgent,
      meta: { session_id: admin.sessionId },
    });
  }

  const res = NextResponse.json({ ok: true });
  res.cookies.set({
    name: ADMIN_COOKIE,
    value: "",
    httpOnly: true,
    path: "/",
    maxAge: 0,
  });
  return res;
}
