From 4e16e933f2fea40f77319077fd645604adcc95bd Mon Sep 17 00:00:00 2001 From: Timothy Yin Date: Thu, 12 Mar 2026 01:14:16 +0800 Subject: [PATCH] feat(login): enhance routing by preserving 'from' path in login redirects --- apps/web/app/login/page.tsx | 5 +++-- apps/web/middleware.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/web/app/login/page.tsx b/apps/web/app/login/page.tsx index f75f149..80d24a7 100644 --- a/apps/web/app/login/page.tsx +++ b/apps/web/app/login/page.tsx @@ -10,6 +10,7 @@ function LoginForm() { const router = useRouter(); const searchParams = useSearchParams(); const justSetup = searchParams.get("setup") === "1"; + const fromPath = searchParams.get("from"); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); @@ -29,7 +30,7 @@ function LoginForm() { if (res.error) { setError(res.error.message ?? "登录失败,请检查用户名和密码"); } else { - router.push("/dashboard"); + router.push(fromPath ?? "/dashboard"); router.refresh(); } } catch { @@ -47,7 +48,7 @@ function LoginForm() { if (res?.error) { setError(res.error.message ?? "Passkey 登录失败"); } else { - router.push("/dashboard"); + router.push(fromPath ?? "/dashboard"); router.refresh(); } } catch { diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts index 153b9a0..21fc99e 100644 --- a/apps/web/middleware.ts +++ b/apps/web/middleware.ts @@ -63,7 +63,8 @@ export async function middleware(request: NextRequest) { if (!sessionCookie) { const loginUrl = new URL("/login", request.url); - loginUrl.searchParams.set("from", pathname); + const fromPath = request.nextUrl.search ? pathname + request.nextUrl.search : pathname; + loginUrl.searchParams.set("from", fromPath); const res = NextResponse.redirect(loginUrl); if (!fromCache) res.cookies.set("helios_setup_done", "1", { path: "/", httpOnly: true, sameSite: "lax" }); return res;