import { NextResponse } from "next/server";
import { adminCookieOptions, ADMIN_CSRF_COOKIE, ADMIN_SESSION_COOKIE, createAdminSession, csrfCookieOptions, newCsrfToken, verifyAdminCredentials } from "@/lib/admin-auth";
import { recordAudit } from "@/lib/audit";

export async function POST(request: Request) {
  try {
    const body = await request.json();
    const login = typeof body.login === "string" ? body.login : "";
    const password = typeof body.password === "string" ? body.password : "";
    if (!await verifyAdminCredentials(request, login, password)) {
      await recordAudit("admin_login_failed", { details: { login: login.slice(0, 64) } });
      return NextResponse.json({ error: "Неверные данные для входа" }, { status: 401 });
    }
    const session = await createAdminSession();
    const csrf = newCsrfToken();
    const response = NextResponse.json({ ok: true });
    response.cookies.set(ADMIN_SESSION_COOKIE, session, adminCookieOptions(8 * 60 * 60));
    response.cookies.set(ADMIN_CSRF_COOKIE, csrf, csrfCookieOptions(8 * 60 * 60));
    await recordAudit("admin_login");
    return response;
  } catch {
    return NextResponse.json({ error: "Не удалось выполнить вход" }, { status: 503 });
  }
}
