Skip to content
File

Blob: src/client/lib/navigation.ts

typescript19 lines
1const DEFAULT_SIGN_IN_REDIRECT = "/account";
2 
3export const normalizeLocalPath = (value: string | null | undefined, fallback = DEFAULT_SIGN_IN_REDIRECT): string => {
4 if (!value || !value.startsWith("/") || value.startsWith("//") || value.includes("\\")) {
5 return fallback;
6 }
7 
8 try {
9 const parsed = new URL(value, window.location.origin);
10 if (parsed.origin !== window.location.origin) return fallback;
11 return `${parsed.pathname}${parsed.search}${parsed.hash}`;
12 } catch {
13 return fallback;
14 }
15};
16 
17export const signInPath = (redirectTo: string): string =>
18 `/sign-in?redirect=${encodeURIComponent(normalizeLocalPath(redirectTo))}`;