Skip to content
Snippets Groups Projects
Verified Commit ae517281 authored by Defendi Alberto's avatar Defendi Alberto
Browse files

Move cookie fetch to App

parent 37c55739
No related branches found
No related tags found
2 merge requests!56Refined auth flow and new website pages.,!41Sign up form setup
import React, { FC } from 'react'; import React, { FC, useEffect, useState } from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'; import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import { HomePage } from 'components/HomePage/HomePage'; import { HomePage } from 'components/HomePage/HomePage';
import { AuthUser } from 'components/AuthUser/AuthUser'; import { AuthUser } from 'components/AuthUser/AuthUser';
...@@ -9,26 +9,49 @@ import { NotFound } from 'components/NotFound/NotFound'; ...@@ -9,26 +9,49 @@ import { NotFound } from 'components/NotFound/NotFound';
import { ProfilePage } from 'components/ProfilePage/ProfilePage'; import { ProfilePage } from 'components/ProfilePage/ProfilePage';
import { Roles } from 'components/api/userRoles'; import { Roles } from 'components/api/userRoles';
import { Unauthorized } from 'components/Unauthorized/Unauthorized'; import { Unauthorized } from 'components/Unauthorized/Unauthorized';
import axios from 'axios';
export const App: FC = () => ( const configDjangoCookieName = (): void => {
<Router> axios.defaults.xsrfHeaderName = 'X-CSRFTOKEN';
<div data-testid="App"> axios.defaults.xsrfCookieName = 'csrftoken';
<Switch> axios.defaults.withCredentials = true;
<Route path={NonAuthRoutes.auth} component={AuthUser} /> };
<Route exact path={NonAuthRoutes.home} component={LandingPage} />
<PrivateRoute export const App: FC = () => {
path={AuthRoutes.dashboard} const [isCookieFetched, setisCookieFetched] = useState<string>('');
Component={HomePage} configDjangoCookieName();
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]} useEffect(() => {
/> const fetchCookie = async (): Promise<unknown> => {
<PrivateRoute const response = await axios('api/web/csrf');
path={AuthRoutes.profile} axios.defaults.headers.common['X-CSRFTOKEN'] = response.data.token;
Component={ProfilePage} sessionStorage.setItem('X-CSRFTOKEN', response.data.token);
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]} sessionStorage.setItem('ROLE', 'admin');
/> setisCookieFetched(response.data.token);
<Route path={NonAuthRoutes.unauthorized} component={Unauthorized} /> return null;
<Route component={NotFound} /> };
</Switch> if (!isCookieFetched) fetchCookie();
</div> }, []);
</Router>
); return (
<Router>
<div data-testid="App">
<Switch>
<Route path={NonAuthRoutes.auth} component={AuthUser} />
<Route exact path={NonAuthRoutes.home} component={LandingPage} />
<PrivateRoute
path={AuthRoutes.dashboard}
Component={HomePage}
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
/>
<PrivateRoute
path={AuthRoutes.profile}
Component={ProfilePage}
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
/>
<Route path={NonAuthRoutes.unauthorized} component={Unauthorized} />
<Route component={NotFound} />
</Switch>
</div>
</Router>
);
};
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