Skip to content
Snippets Groups Projects
Commit 4c5b0f4a authored by Sivert Kronen Hatteberg's avatar Sivert Kronen Hatteberg
Browse files

Add a new component for handling loggin out of a invite "session"

parent 8c6ae711
No related branches found
No related tags found
1 merge request!192Greg 87 invitation logout
...@@ -48,6 +48,9 @@ const Header = () => { ...@@ -48,6 +48,9 @@ const Header = () => {
const { user } = useUserContext() const { user } = useUserContext()
const { t } = useTranslation('common') const { t } = useTranslation('common')
const logoutLink =
user.auth_type === 'oidc' ? '/oidc/logout' : '/invite/logout'
return ( return (
<StyledHeader> <StyledHeader>
<MainContainer> <MainContainer>
...@@ -61,7 +64,7 @@ const Header = () => { ...@@ -61,7 +64,7 @@ const Header = () => {
sx={{ sx={{
color: 'white', color: 'white',
}} }}
href="/oidc/logout" href={logoutLink}
> >
{t('button.logout')} {t('button.logout')}
<LogoutIcon <LogoutIcon
......
...@@ -13,6 +13,7 @@ import Register from 'routes/sponsor/register' ...@@ -13,6 +13,7 @@ import Register from 'routes/sponsor/register'
import FrontPage from 'routes/frontpage' import FrontPage from 'routes/frontpage'
import Invite from 'routes/invite' import Invite from 'routes/invite'
import InviteLink from 'routes/invitelink' import InviteLink from 'routes/invitelink'
import LogoutInviteSession from 'routes/invitelink/logout'
import Footer from 'routes/components/footer' import Footer from 'routes/components/footer'
import Header from 'routes/components/header' import Header from 'routes/components/header'
import NotFound from 'routes/components/notFound' import NotFound from 'routes/components/notFound'
...@@ -77,6 +78,7 @@ export default function App() { ...@@ -77,6 +78,7 @@ export default function App() {
<Register /> <Register />
</ProtectedRoute> </ProtectedRoute>
<Route path="/invitelink/" component={InviteLink} /> <Route path="/invitelink/" component={InviteLink} />
<Route path="/invite/logout" component={LogoutInviteSession} />
<Route path="/invite/" component={Invite} /> <Route path="/invite/" component={Invite} />
<Route path="/guestregister" component={GuestRegister} /> <Route path="/guestregister" component={GuestRegister} />
<Route> <Route>
......
import { useEffect, useState } from 'react'
import { Redirect } from 'react-router-dom'
import { useCookies } from 'react-cookie'
import { Box, CircularProgress } from '@mui/material'
import { useUserContext } from 'contexts'
export default function LogoutInviteSession() {
// Fetch backend endpoint to preserve invite_id in backend session then redirect
const [, , removeCookie] = useCookies(['sessionid'])
const [loggedOut, setLoggedOut] = useState(false)
const { fetchUserInfo } = useUserContext()
useEffect(() => {
fetch('/api/ui/v1/invitecheck/', { method: 'DELETE' })
.then(() => removeCookie('sessionid'))
.then(() => fetchUserInfo())
.then(() => setLoggedOut(true))
}, [])
if (loggedOut) {
return <Redirect to="/" />
}
return (
<Box sx={{ margin: 'auto' }}>
<CircularProgress />
</Box>
)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment