diff --git a/web/app/login/page.tsx b/web/app/login/page.tsx index 7e81169..9ba5035 100644 --- a/web/app/login/page.tsx +++ b/web/app/login/page.tsx @@ -1,8 +1,8 @@ import { signIn } from "@/lib/auth/config"; -// Minimal stub — Phase D will replace this with a proper UI. -// Email+password hits the credentials provider; the dev-impersonate -// form is only rendered in non-production and trusts any email. +// Force dynamic rendering so process.env is read at request time, +// not baked in at build time (needed for runtime-injected container env vars). +export const dynamic = "force-dynamic"; async function credentialsSignIn(formData: FormData) { "use server"; @@ -11,6 +11,11 @@ async function credentialsSignIn(formData: FormData) { await signIn("credentials", { email, password, redirectTo: "/" }); } +async function homelabSignIn() { + "use server"; + await signIn("homelab", { redirectTo: "/" }); +} + async function devImpersonate(formData: FormData) { "use server"; const email = String(formData.get("email") ?? ""); @@ -18,12 +23,31 @@ async function devImpersonate(formData: FormData) { } export default function LoginPage() { - const isProd = process.env.NODE_ENV === "production"; + const allowDevImpersonate = + process.env.NODE_ENV !== "production" || + process.env.ALLOW_DEV_IMPERSONATE === "1"; + + const homelabConfigured = !!( + process.env.AUTH_HOMELAB_ISSUER && + process.env.AUTH_HOMELAB_CLIENT_ID && + process.env.AUTH_HOMELAB_CLIENT_SECRET + ); return (