Fixed redirect errors when including a hash in the URL

main
Jackson Morgan 1 year ago
parent 598755bbfc
commit 34554382eb
  1. 26
      packages/solid-react/src/BrowserSolidLdoProvider.tsx

@ -27,25 +27,31 @@ export const BrowserSolidLdoProvider: FunctionComponent<PropsWithChildren> = ({
await handleIncomingRedirect({ await handleIncomingRedirect({
restorePreviousSession: true, restorePreviousSession: true,
}); });
setSession({ ...getDefaultSession().info }); // Set timout to ensure this happens after the redirect
window.history.replaceState( setTimeout(() => {
{}, setSession({ ...getDefaultSession().info });
"", window.history.replaceState(
window.localStorage.getItem(PRE_REDIRECT_URI), {},
); "",
window.localStorage.removeItem(PRE_REDIRECT_URI); window.localStorage.getItem(PRE_REDIRECT_URI),
);
window.localStorage.removeItem(PRE_REDIRECT_URI);
setRanInitialAuthCheck(true); setRanInitialAuthCheck(true);
}, 0);
}, []); }, []);
const login = useCallback(async (issuer: string, options?: LoginOptions) => { const login = useCallback(async (issuer: string, options?: LoginOptions) => {
const cleanUrl = new URL(window.location.href);
cleanUrl.hash = "";
cleanUrl.search = "";
const fullOptions = { const fullOptions = {
redirectUrl: window.location.href, redirectUrl: cleanUrl.toString(),
clientName: "Solid App", clientName: "Solid App",
oidcIssuer: issuer, oidcIssuer: issuer,
...options, ...options,
}; };
window.localStorage.setItem(PRE_REDIRECT_URI, fullOptions.redirectUrl); window.localStorage.setItem(PRE_REDIRECT_URI, window.location.href);
await libraryLogin(fullOptions); await libraryLogin(fullOptions);
setSession({ ...getDefaultSession().info }); setSession({ ...getDefaultSession().info });
}, []); }, []);

Loading…
Cancel
Save