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

Cleanup.

- Wrap components in dashboard.
- Move mui theme in App.style.ts.
- Move api calls to separate files.
- Insert AuthContext provider.
parent 680d9210
No related branches found
No related tags found
2 merge requests!56Refined auth flow and new website pages.,!44New route type (RestrictedRoute) and better api calls.
import React, { FC, useEffect, useState } from 'react'; import React, { FC, useEffect, useState } from 'react';
import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'; import { ThemeProvider } from '@material-ui/core/styles';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'; import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import { AuthUser } from 'components/AuthUser/AuthUser'; import { AuthUser } from 'components/AuthUser/AuthUser';
import { LandingPage } from 'components/NonAuthUser/LandingPage/LandingPage'; import { LandingPage } from 'components/NonAuthUser/LandingPage/LandingPage';
import { PrivateRoute } from 'api/PrivateRoute/PrivateRoute'; import { PrivateRoute } from 'api/PrivateRoute/PrivateRoute';
import { AuthRoutes, NonAuthRoutes } from 'api/routes'; import { AuthRoutes, NonAuthRoutes } from 'api/routes';
import { NotFound } from 'components/NonAuthUser/NotFound/NotFound'; import { NotFound } from 'components/NonAuthUser/NotFound/NotFound';
import { ProfilePage } from 'components/AuthUser/ProfilePage/ProfilePage'; import { ProfilePage } from 'components/AuthUser/Dashboard/ProfilePage/ProfilePage';
import { Roles } from 'api/userRoles'; import { Roles } from 'api/userRoles';
import { Unauthorized } from 'components/NonAuthUser/Unauthorized/Unauthorized'; import { Unauthorized } from 'components/NonAuthUser/Unauthorized/Unauthorized';
import { ReservationPage } from 'components/AuthUser/ReservationPage/ReservationPage'; import { HomePage } from 'components/AuthUser/Dashboard/HomePage/HomePage';
import { HomePage } from 'components/AuthUser/HomePage/HomePage';
import { SignInForm } from 'components/AuthUser/SignInForm/SignInForm';
import { AuthContext } from 'components/AuthUser/AuthContext'; import { AuthContext } from 'components/AuthUser/AuthContext';
import { configDjangoCookieName } from 'api/configDjangoCookieName'; import { configDjangoCookieName } from 'api/configDjangoCookieName';
import { fetchCookie } from 'api/fetchCookie';
import { Dashboard } from 'components/AuthUser/Dashboard/Dashboard';
import { isAuthenticated } from 'api/isAuthenticated';
import { muiTheme } from 'App.style';
import { getRole } from 'api/getRole';
const theme = createMuiTheme({ /**
palette: { * Entry point of the app.
primary: { */
main: '#5e5ce4',
},
secondary: {
main: '#e2e45c',
},
},
typography: {
fontSize: 16,
},
overrides: {
MuiTabs: {
indicator: {
backgroundColor: 'white',
},
},
MuiTab: {
wrapper: {
flexDirection: 'row',
},
},
},
});
export const App: FC = () => { export const App: FC = () => {
let isMounted = true;
configDjangoCookieName(); configDjangoCookieName();
const [role, setRole] = useState(''); const [role, setRole] = useState('');
const value = { role, setRole }; const [isAuth, setIsAuth] = useState<boolean>(false);
const [isCookieFetched, setIsCookieFetched] = useState<string>('');
const value = { role, setRole, isAuth, setIsAuth };
useEffect(() => {
if (!isCookieFetched && isMounted) fetchCookie(setIsCookieFetched);
// Initialize asking the server if this session is already logged in.
isAuthenticated(setIsAuth);
getRole(setRole);
return () => {
isMounted = false;
};
}, [isCookieFetched]);
return ( return (
<ThemeProvider theme={theme}> <ThemeProvider theme={muiTheme}>
<Router> <AuthContext.Provider value={value}>
<div data-testid="App"> <Router>
<Switch> <Switch>
<Route exact path={NonAuthRoutes.home} component={LandingPage} /> <Route exact path={NonAuthRoutes.home} component={LandingPage} />
<AuthContext.Provider value={value}>
<Route path={NonAuthRoutes.auth} component={AuthUser} /> <Route path={NonAuthRoutes.auth} component={AuthUser} />
<PrivateRoute <PrivateRoute
path={AuthRoutes.dashboard} Component={Dashboard}
Component={HomePage} path={AuthRoutes.dashboard}
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]} requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
/> />
<PrivateRoute <PrivateRoute
path={AuthRoutes.profile} Component={HomePage}
Component={ProfilePage} path={AuthRoutes.dashboard}
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]} requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
/> />
</AuthContext.Provider> <PrivateRoute
<Route path={AuthRoutes.reservation} component={ReservationPage} /> Component={ProfilePage}
path={AuthRoutes.profile}
requiredRoles={[Roles.admin, Roles.operator, Roles.senior]}
/>
<Route path={NonAuthRoutes.unauthorized} component={Unauthorized} /> <Route path={NonAuthRoutes.unauthorized} component={Unauthorized} />
<Route component={NotFound} /> <Route component={NotFound} />
</Switch> </Switch>
</div> </Router>
</Router> </AuthContext.Provider>
</ThemeProvider> </ThemeProvider>
); );
}; };
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