import { NextResponse } from "next/server";
import { createAdminSession, getAdminEmail } from "@/lib/admin-auth";
import { prisma } from "@/lib/prisma";
import { sha256 } from "@/lib/security";

export async function GET(request: Request) {
  const base = new URL(request.url).origin;
  const token = new URL(request.url).searchParams.get("token") ?? "";
  const record = await prisma.adminLoginToken.findUnique({
    where: { tokenHash: sha256(token) },
  });

  if (!record || record.usedAt || record.expiresAt <= new Date()) {
    return NextResponse.redirect(`${base}/admin/login?status=invalid`);
  }

  await prisma.adminLoginToken.update({
    where: { id: record.id },
    data: { usedAt: new Date() },
  });
  await createAdminSession(getAdminEmail());

  return NextResponse.redirect(`${base}/admin`);
}
