From fe90c06b4e7a7078e81d95db228aa297a934a6cd Mon Sep 17 00:00:00 2001 From: Katalina Okano Date: Sun, 14 Mar 2021 15:54:30 -0400 Subject: [PATCH] fix(web): add /machinery/new-session/... route, start auth flow from there --- packages/web/src/app-router/AppRouter.tsx | 4 ++++ packages/web/src/pages/landing.tsx | 2 +- .../web/src/pages/machinery/new-session.tsx | 22 ++++++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/web/src/app-router/AppRouter.tsx b/packages/web/src/app-router/AppRouter.tsx index 31ff9ab..95c54dd 100644 --- a/packages/web/src/app-router/AppRouter.tsx +++ b/packages/web/src/app-router/AppRouter.tsx @@ -31,6 +31,10 @@ export const AppRouter = () => { + diff --git a/packages/web/src/pages/landing.tsx b/packages/web/src/pages/landing.tsx index f663d9f..fecbfb3 100644 --- a/packages/web/src/pages/landing.tsx +++ b/packages/web/src/pages/landing.tsx @@ -10,7 +10,7 @@ const Landing = () => { const appShellProps = useAppShellProps(); if (isAuthenticated) { - return ; + return ; } return ( diff --git a/packages/web/src/pages/machinery/new-session.tsx b/packages/web/src/pages/machinery/new-session.tsx index 959f80f..798b177 100644 --- a/packages/web/src/pages/machinery/new-session.tsx +++ b/packages/web/src/pages/machinery/new-session.tsx @@ -1,22 +1,32 @@ +import { Redirect } from '@reach/router'; import * as React from 'react'; +import { useSessionContext } from '../../contexts/session/SessionContext'; import { Title } from '../../utils/metaTitle'; -const NewSession = () => { +const NewSession = (props: { sessionID: string }) => { + const session = useSessionContext(); + const [postauthUrl, setPostauthUrl] = React.useState('/servers'); + React.useEffect(() => { const url = new URL(window.location.href); - const id = url.searchParams.get('session_id'); + const id = props.sessionID || url.searchParams.get('session_id'); if (id) { localStorage.setItem('rp_session_key', id); + session.setSession({ sessionID: id }); - const redirectUrl = localStorage.getItem('rp_postauth_redirect'); - window.location.href = redirectUrl || '/'; + const storedPostauthUrl = localStorage.getItem('rp_postauth_redirect'); + if (storedPostauthUrl) { + setPostauthUrl(storedPostauthUrl); + localStorage.removeItem('rp_postauth_redirect'); + } } - }); + }, [setPostauthUrl, props.sessionID, session]); return ( <> - <div>Redirecting you...</div> + <div>Logging you into Roleypoly...</div> + {session.isAuthenticated && <Redirect to={postauthUrl} noThrow replace />} </> ); };