import { getSessionUser } from "@/lib/auth";
import { isKavenixAdminEmail } from "@/lib/kavenix-admin";
import { buildGoogleSearchConsoleAuthorizeUrl } from "@/lib/google-search-console";
import { resolveOriginFromHeaders } from "@/lib/mail-urls";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

function redirectToDashboard(request: Request, status: string) {
  const origin = resolveOriginFromHeaders(request.headers);
  return Response.redirect(new URL(`/kavenix?view=search&gsc=${status}`, `${origin}/`), 302);
}

export async function GET(request: Request) {
  const user = await getSessionUser();

  if (!user || !isKavenixAdminEmail(user.email)) {
    return redirectToDashboard(request, "forbidden");
  }

  try {
    const origin = resolveOriginFromHeaders(request.headers);
    const redirectUri = new URL("/api/integrations/google-search-console/callback", `${origin}/`).toString();
    const authorizeUrl = buildGoogleSearchConsoleAuthorizeUrl({ email: user.email, redirectUri });

    return Response.redirect(authorizeUrl, 302);
  } catch {
    return redirectToDashboard(request, "not-configured");
  }
}
