From 68b8ab31b795db9b5e9214dd654f8eb9db7a474e Mon Sep 17 00:00:00 2001 From: AV77web Date: Wed, 27 May 2026 17:06:04 +0200 Subject: [PATCH] inserito proxy.ts per il login --- src/app/login/page.tsx | 25 ++++++++++++++++++++++++- src/proxy.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/proxy.ts diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 40d7e0d..071c30a 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -6,10 +6,27 @@ import { auth, signIn } from "@/src/auth"; type LoginPageProps = { searchParams?: Promise<{ + callbackUrl?: string; error?: string; }>; }; +function getSafeRedirectTo(value: FormDataEntryValue | null): string { + const raw = String(value ?? "/"); + + if (raw.startsWith("/") && !raw.startsWith("//")) { + return raw; + } + + try { + const parsed = new URL(raw); + + return `${parsed.pathname}${parsed.search}${parsed.hash}`; + } catch { + return "/"; + } +} + async function login(formData: FormData) { "use server"; @@ -24,7 +41,7 @@ async function login(formData: FormData) { await signIn("credentials", { identifier, password: formData.get("password"), - redirectTo: "/", + redirectTo: getSafeRedirectTo(formData.get("callbackUrl")), }); } catch (error) { if (error instanceof AuthError) { @@ -81,6 +98,12 @@ export default async function LoginPage({ searchParams }: LoginPageProps) { ) : null}
+ +