import { redirect } from "next/navigation";
import { headers } from "next/headers";
import { AuthScreen } from "../../components/auth-screen";
import { LicenseBlocked } from "../../components/license-blocked";
import { getCurrentAppUser } from "../../lib/current-user";
import { isAdminUser } from "../../lib/auth-store";
import { oauthProviderStatus } from "../../lib/oauth";
import { verifyRuntimeLicense } from "../../lib/runtime-license";

export const dynamic = "force-dynamic";

export default async function LoginPage({ searchParams }: { searchParams?: Promise<Record<string, string | string[] | undefined>> }) {
  const requestHeaders = await headers();
  const host = requestHeaders.get("x-forwarded-host") || requestHeaders.get("host") || "localhost";
  const license = await verifyRuntimeLicense(host);
  if (!license.valid) return <LicenseBlocked reason={license.reason} domain={license.domain} installationId={license.installationId} />;
  const user = await getCurrentAppUser();
  if (user) redirect(isAdminUser(user) ? "/" : "/customer");
  const params = await searchParams;
  const error = typeof params?.error === "string" ? params.error : "";
  const status = typeof params?.status === "string" ? params.status : "";
  const admin = params?.portal === "admin" || params?.admin === "1";
  return <AuthScreen initialPortal={admin ? "admin" : "customer"} initialError={error} initialStatus={status} providers={oauthProviderStatus()} localAdminEnabled={process.env.NODE_ENV !== "production"} />;
}
