Fixed redirect errors when including a hash in the URL

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

@ -27,6 +27,8 @@ export const BrowserSolidLdoProvider: FunctionComponent<PropsWithChildren> = ({
await handleIncomingRedirect({ await handleIncomingRedirect({
restorePreviousSession: true, restorePreviousSession: true,
}); });
// Set timout to ensure this happens after the redirect
setTimeout(() => {
setSession({ ...getDefaultSession().info }); setSession({ ...getDefaultSession().info });
window.history.replaceState( window.history.replaceState(
{}, {},
@ -36,16 +38,20 @@ export const BrowserSolidLdoProvider: FunctionComponent<PropsWithChildren> = ({
window.localStorage.removeItem(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