diff --git a/frontend/app/auth/login/page.tsx b/frontend/app/auth/login/page.tsx index c5112f36..71d71141 100644 --- a/frontend/app/auth/login/page.tsx +++ b/frontend/app/auth/login/page.tsx @@ -2,7 +2,7 @@ import { LoginClient } from "@/components/auth/LoginClient"; import { I18nProvider } from "@/hooks/useI18n"; type PageProps = { - searchParams?: Promise<{ next?: string }>; + searchParams?: Promise<{ next?: string; mode?: string }>; }; function normalizeNextPath(input: string | undefined) { @@ -14,12 +14,18 @@ function normalizeNextPath(input: string | undefined) { return raw; } +function normalizeMode(input: string | undefined): "login" | "signup" { + if (input === "signup") return "signup"; + return "login"; +} + export default async function LoginPage({ searchParams }: PageProps) { const params = (await searchParams) || {}; const nextPath = normalizeNextPath(params.next); + const initialMode = normalizeMode(params.mode); return ( - + ); } diff --git a/frontend/components/auth/LoginClient.tsx b/frontend/components/auth/LoginClient.tsx index 4f2d69e5..58aa8eb7 100644 --- a/frontend/components/auth/LoginClient.tsx +++ b/frontend/components/auth/LoginClient.tsx @@ -26,12 +26,13 @@ type Mode = "login" | "signup"; type LoginClientProps = { nextPath: string; + initialMode?: Mode; }; -export function LoginClient({ nextPath }: LoginClientProps) { +export function LoginClient({ nextPath, initialMode }: LoginClientProps) { const router = useRouter(); const { locale } = useI18n(); - const [mode, setMode] = useState("login"); + const [mode, setMode] = useState(initialMode ?? "login"); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); @@ -40,18 +41,6 @@ export function LoginClient({ nextPath }: LoginClientProps) { const [resetSent, setResetSent] = useState(false); const [showPassword, setShowPassword] = useState(false); - useEffect(() => { - if (typeof window !== "undefined") { - const params = new URLSearchParams(window.location.search); - const m = params.get("mode"); - if (m === "signup") { - setMode("signup"); - } else if (m === "login") { - setMode("login"); - } - } - }, []); - const supabaseReady = hasSupabasePublicEnv(); const isLogin = mode === "login"; const siteOrigin =