authorizer/app/src/Root.tsx

56 lines
1.3 KiB
TypeScript
Raw Normal View History

2021-12-28 22:46:31 +00:00
import React, { useEffect, lazy, Suspense } from 'react';
import { Switch, Route } from 'react-router-dom';
import { useAuthorizer } from '@authorizerdev/authorizer-react';
2021-12-28 22:46:31 +00:00
const ResetPassword = lazy(() => import('./pages/rest-password'));
const Login = lazy(() => import('./pages/login'));
const Dashboard = lazy(() => import('./pages/dashboard'));
export default function Root() {
2021-08-06 13:47:52 +00:00
const { token, loading, config } = useAuthorizer();
2021-08-06 13:47:52 +00:00
useEffect(() => {
2021-08-09 03:16:07 +00:00
if (token) {
2022-03-07 18:14:19 +00:00
const state = sessionStorage.getItem('authorizer_state')?.trim();
const url = new URL(config.redirectURL || '/app');
2021-08-09 03:16:07 +00:00
if (url.origin !== window.location.origin) {
2022-03-07 18:14:19 +00:00
console.log({ x: `${config.redirectURL || '/app'}?state=${state}` });
sessionStorage.removeItem('authorizer_state');
window.location.replace(
`${config.redirectURL || '/app'}?state=${state}`
);
2021-08-09 03:16:07 +00:00
}
2021-08-06 13:47:52 +00:00
}
return () => {};
}, [token]);
2021-08-06 13:47:52 +00:00
if (loading) {
return <h1>Loading...</h1>;
}
2021-08-06 13:47:52 +00:00
if (token) {
return (
2021-12-28 22:46:31 +00:00
<Suspense fallback={<></>}>
<Switch>
<Route path="/app" exact>
<Dashboard />
</Route>
</Switch>
</Suspense>
2021-08-06 13:47:52 +00:00
);
}
return (
2021-12-28 22:46:31 +00:00
<Suspense fallback={<></>}>
<Switch>
<Route path="/app" exact>
<Login />
</Route>
<Route path="/app/reset-password">
<ResetPassword />
</Route>
</Switch>
</Suspense>
2021-08-06 13:47:52 +00:00
);
}