Openstatus www.openstatus.dev

fix: callback url (#1724)

* fix: callback url

* fix: build

authored by

Maximilian Kaske and committed by
GitHub
3478aa59 f1ad8e8b

+14 -4
+11 -1
apps/dashboard/src/app/(dashboard)/onboarding/client.tsx
··· 129 129 ); 130 130 131 131 useEffect(() => { 132 - if (callbackUrl) router.push(callbackUrl); 132 + if (!callbackUrl) return; 133 + // Ignore base URL redirects - only redirect for meaningful paths (e.g., /invite?token=...) 134 + try { 135 + const url = new URL(callbackUrl, window.location.origin); 136 + if (url.pathname === "/" || url.pathname === "") return; 137 + router.push(callbackUrl); 138 + } catch { 139 + // If callbackUrl is a relative path, check it directly 140 + if (callbackUrl === "/" || callbackUrl === "") return; 141 + router.push(callbackUrl); 142 + } 133 143 }, [callbackUrl, router]); 134 144 135 145 return (
+2 -2
apps/dashboard/src/app/login/page.tsx
··· 34 34 <form 35 35 action={async () => { 36 36 "use server"; 37 - await signIn("github", { redirectTo }); 37 + await signIn("github", { redirectTo: redirectTo ?? undefined }); 38 38 }} 39 39 className="w-full" 40 40 > ··· 45 45 <form 46 46 action={async () => { 47 47 "use server"; 48 - await signIn("google", { redirectTo }); 48 + await signIn("google", { redirectTo: redirectTo ?? undefined }); 49 49 }} 50 50 className="w-full" 51 51 >
+1 -1
apps/dashboard/src/app/login/search-params.ts
··· 1 1 import { createSearchParamsCache, parseAsString } from "nuqs/server"; 2 2 3 3 export const searchParamsParsers = { 4 - redirectTo: parseAsString.withDefault("/"), 4 + redirectTo: parseAsString, 5 5 }; 6 6 7 7 export const searchParamsCache = createSearchParamsCache(searchParamsParsers);