diff --git a/src/App.tsx b/src/App.tsx index 801d8e3a0e8309cf87d3a0c5f54c226dc5920831..facca47bdc9ca174ecee01b589b483096b197f1c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,26 +1,26 @@ -import React, { FC, useEffect, useState } from 'react'; +import React, { FC } from 'react'; import { ThemeProvider } from '@material-ui/core/styles'; import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'; -import { AuthUser } from 'components/AuthUser/AuthUser'; -import { LandingPage } from 'components/NonAuthUser/LandingPage/LandingPage'; -import { PrivateRoute } from 'components/PrivateRoute/PrivateRoute'; import { AuthRoutes, NonAuthRoutes } from 'api/routes'; -import { NotFound } from 'components/NonAuthUser/NotFound/NotFound'; -import { ProfilePage } from 'components/AuthUser/Dashboard/ProfilePage/ProfilePage'; import { Roles } from 'api/userRoles'; -import { Unauthorized } from 'components/NonAuthUser/Unauthorized/Unauthorized'; -import { HomePage } from 'components/AuthUser/Dashboard/HomePage/HomePage'; -import { AuthContext } from 'components/AuthUser/AuthContext'; import { configDjangoCookieName } from 'api/configDjangoCookieName'; -import { Dashboard } from 'components/AuthUser/Dashboard/Dashboard'; -import { isAuthenticated } from 'api/isAuthenticated'; import { muiTheme } from 'App.style'; -import { getRole } from 'api/getRole'; import { withAuthorization } from 'components/Authorization/Authorization'; import { useRole } from 'hooks/useRole'; import { useAuth } from 'hooks/useAuth'; +import { AuthUser } from 'components/Auth/Auth'; +import { AuthContext } from 'components/Auth/AuthContext'; +import { Dashboard } from 'components/Dashboard/Dashboard'; +import { NotFound } from 'components/NotFound/NotFound'; +import { Unauthorized } from 'components/Unauthorized/Unauthorized'; +import { LandingPage } from 'components/LandingPage/LandingPage'; -const Personal = withAuthorization(Dashboard); +const All = withAuthorization([ + Roles.admin, + Roles.operator, + Roles.senior, + Roles.driver, +]); /** * Entry point of the app. @@ -39,16 +39,8 @@ export const App: FC = () => { <Router> <Switch> <Route exact path={NonAuthRoutes.home} component={LandingPage} /> - <Route path={NonAuthRoutes.auth} component={AuthUser} /> - <Route - path={AuthRoutes.dashboard} - render={() => ( - <Personal - allowedRoles={['admin', 'driver', 'senior', 'operator']} - /> - )} - /> + <Route path={AuthRoutes.dashboard} component={All(Dashboard)} /> <Route path={NonAuthRoutes.unauthorized} component={Unauthorized} diff --git a/src/api/userRoles.ts b/src/api/userRoles.ts index 1f7b30dbdd7631fbb0bd0eb1cc2642fe893b6635..77e66434cebfbba2299eafd90a537960766934c1 100644 --- a/src/api/userRoles.ts +++ b/src/api/userRoles.ts @@ -1,8 +1,9 @@ export enum Roles { /** Website visitor, is not logged. Can access to NonAuthRoutes */ visitor = '', - /** Can access to private and restricted routes depending on their permissions level. */ + /** Can access to routes wrapped by withAuthorization. */ senior = 'senior', admin = 'admin', operator = 'operator', + driver = 'driver', } diff --git a/src/components/AuthUser/AuthUser.tsx b/src/components/Auth/Auth.tsx similarity index 69% rename from src/components/AuthUser/AuthUser.tsx rename to src/components/Auth/Auth.tsx index 2206e221488202e33fad82d0c84258812c9355f9..bd5dd6d8f45438dd7cc6eac1628953f7812e4360 100644 --- a/src/components/AuthUser/AuthUser.tsx +++ b/src/components/Auth/Auth.tsx @@ -2,10 +2,9 @@ import React, { FC } from 'react'; import Container from '@material-ui/core/Container'; import { Redirect, Route, useRouteMatch } from 'react-router-dom'; import { AuthRoutes, NonAuthRoutes } from 'api/routes'; -import { SignInForm } from 'components/AuthUser/SignInForm/SignInForm'; -import { SignUpForm } from 'components/AuthUser/SignUpForm/SignUpForm'; -import { ChoseRole } from 'components/AuthUser/ChoseRole/ChoseRole'; -import { RestrictedRoute } from 'components/RestrictedRoute/RestrictedRoute'; +import { ChoseRole } from 'components/Auth/ChoseRole/ChoseRole'; +import { SignInForm } from 'components/Auth/SignInForm/SignInForm'; +import { SignUpForm } from 'components/Auth/SignUpForm/SignUpForm'; /** * Keeps all components related to SignIn/SignOut logic. diff --git a/src/components/AuthUser/AuthContext.tsx b/src/components/Auth/AuthContext.tsx similarity index 100% rename from src/components/AuthUser/AuthContext.tsx rename to src/components/Auth/AuthContext.tsx diff --git a/src/components/AuthUser/ChoseRole/ChoseRole.md b/src/components/Auth/ChoseRole/ChoseRole.md similarity index 100% rename from src/components/AuthUser/ChoseRole/ChoseRole.md rename to src/components/Auth/ChoseRole/ChoseRole.md diff --git a/src/components/AuthUser/ChoseRole/ChoseRole.test.tsx b/src/components/Auth/ChoseRole/ChoseRole.test.tsx similarity index 100% rename from src/components/AuthUser/ChoseRole/ChoseRole.test.tsx rename to src/components/Auth/ChoseRole/ChoseRole.test.tsx diff --git a/src/components/AuthUser/ChoseRole/ChoseRole.tsx b/src/components/Auth/ChoseRole/ChoseRole.tsx similarity index 85% rename from src/components/AuthUser/ChoseRole/ChoseRole.tsx rename to src/components/Auth/ChoseRole/ChoseRole.tsx index ce2688cef4be323d88f8f1377f84698f6924595f..334e2bbdf6582d738c62608511cfc49ff848b5f6 100644 --- a/src/components/AuthUser/ChoseRole/ChoseRole.tsx +++ b/src/components/Auth/ChoseRole/ChoseRole.tsx @@ -1,9 +1,10 @@ -import React, { FC, useEffect, useState } from 'react'; +import React, { FC, useContext, useEffect, useState } from 'react'; import Button from '@material-ui/core/Button'; import { getRoles } from 'api/getRoles'; import { setRole } from 'api/setRole'; import { useHistory } from 'react-router-dom'; import { AuthRoutes } from 'api/routes'; +import { AuthContext } from 'components/Auth/AuthContext'; /** * Page that let's users decide role between available roles. @@ -13,10 +14,12 @@ import { AuthRoutes } from 'api/routes'; export const ChoseRole: FC = () => { const history = useHistory(); const [userRoles, setUserRoles] = useState<string[]>(['']); + const { setIsAuth } = useContext(AuthContext); const choseAndForward = (role: string): void => { // Set role in the server. setRole(role); + setIsAuth(true); // Push to homepage. history.push(`${AuthRoutes.dashboard}${AuthRoutes.home}`); }; diff --git a/src/components/AuthUser/InputField/InputField.md b/src/components/Auth/InputField/InputField.md similarity index 100% rename from src/components/AuthUser/InputField/InputField.md rename to src/components/Auth/InputField/InputField.md diff --git a/src/components/AuthUser/InputField/InputField.tsx b/src/components/Auth/InputField/InputField.tsx similarity index 100% rename from src/components/AuthUser/InputField/InputField.tsx rename to src/components/Auth/InputField/InputField.tsx diff --git a/src/components/AuthUser/SignInForm/CredentialsType.ts b/src/components/Auth/SignInForm/CredentialsType.ts similarity index 100% rename from src/components/AuthUser/SignInForm/CredentialsType.ts rename to src/components/Auth/SignInForm/CredentialsType.ts diff --git a/src/components/AuthUser/SignInForm/SignInForm.md b/src/components/Auth/SignInForm/SignInForm.md similarity index 100% rename from src/components/AuthUser/SignInForm/SignInForm.md rename to src/components/Auth/SignInForm/SignInForm.md diff --git a/src/components/AuthUser/SignInForm/SignInForm.test.tsx b/src/components/Auth/SignInForm/SignInForm.test.tsx similarity index 100% rename from src/components/AuthUser/SignInForm/SignInForm.test.tsx rename to src/components/Auth/SignInForm/SignInForm.test.tsx diff --git a/src/components/AuthUser/SignInForm/SignInForm.tsx b/src/components/Auth/SignInForm/SignInForm.tsx similarity index 95% rename from src/components/AuthUser/SignInForm/SignInForm.tsx rename to src/components/Auth/SignInForm/SignInForm.tsx index 8d9d8be38f17394c0182967a94ffea9639102b28..014067d7c675df9ccb60e8982fa18e44f5e04dcd 100644 --- a/src/components/AuthUser/SignInForm/SignInForm.tsx +++ b/src/components/Auth/SignInForm/SignInForm.tsx @@ -2,11 +2,11 @@ import React, { FC, useCallback, useContext, useState } from 'react'; import axios from 'axios'; import { SubmitHandler, useForm } from 'react-hook-form'; import { Button } from '@material-ui/core'; -import { InputField } from 'components/AuthUser/InputField/InputField'; import { useHistory } from 'react-router-dom'; import { AuthRoutes, NonAuthRoutes } from 'api/routes'; -import { AuthContext } from 'components/AuthUser/AuthContext'; import { fetchCookie } from 'api/fetchCookie'; +import { AuthContext } from 'components/Auth/AuthContext'; +import { InputField } from 'components/Auth/InputField/InputField'; import { useStyles } from './useStyles'; import { CredentialsType } from './CredentialsType'; diff --git a/src/components/AuthUser/SignInForm/postCredentials.ts b/src/components/Auth/SignInForm/postCredentials.ts similarity index 100% rename from src/components/AuthUser/SignInForm/postCredentials.ts rename to src/components/Auth/SignInForm/postCredentials.ts diff --git a/src/components/AuthUser/SignInForm/useStyles.ts b/src/components/Auth/SignInForm/useStyles.ts similarity index 100% rename from src/components/AuthUser/SignInForm/useStyles.ts rename to src/components/Auth/SignInForm/useStyles.ts diff --git a/src/components/AuthUser/SignUpForm/SignUpForm.md b/src/components/Auth/SignUpForm/SignUpForm.md similarity index 100% rename from src/components/AuthUser/SignUpForm/SignUpForm.md rename to src/components/Auth/SignUpForm/SignUpForm.md diff --git a/src/components/AuthUser/SignUpForm/SignUpForm.test.tsx b/src/components/Auth/SignUpForm/SignUpForm.test.tsx similarity index 100% rename from src/components/AuthUser/SignUpForm/SignUpForm.test.tsx rename to src/components/Auth/SignUpForm/SignUpForm.test.tsx diff --git a/src/components/AuthUser/SignUpForm/SignUpForm.tsx b/src/components/Auth/SignUpForm/SignUpForm.tsx similarity index 97% rename from src/components/AuthUser/SignUpForm/SignUpForm.tsx rename to src/components/Auth/SignUpForm/SignUpForm.tsx index 0cf10dcf6197041be8469483c4536807e9956ec7..055cb9dfd6a65782251a65b9cd08e28ab8b34e0c 100644 --- a/src/components/AuthUser/SignUpForm/SignUpForm.tsx +++ b/src/components/Auth/SignUpForm/SignUpForm.tsx @@ -1,9 +1,10 @@ import React, { FC } from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; import { Button } from '@material-ui/core'; -import { InputField } from 'components/AuthUser/InputField/InputField'; -import { useStyles } from 'components/AuthUser/SignUpForm/useStyles'; + import axios from 'axios'; +import { InputField } from 'components/Auth/InputField/InputField'; +import { useStyles } from 'components/Auth/SignUpForm/useStyles'; // TODO: Data validation // TODO: Replace notes with big input field export const SignUpForm: FC = () => { diff --git a/src/components/AuthUser/SignUpForm/useStyles.ts b/src/components/Auth/SignUpForm/useStyles.ts similarity index 100% rename from src/components/AuthUser/SignUpForm/useStyles.ts rename to src/components/Auth/SignUpForm/useStyles.ts diff --git a/src/components/Authorization/Authorization.tsx b/src/components/Authorization/Authorization.tsx index f00d076bf5d28f823a7c39740064483a75d13445..08db3cea5572ddc10184b44cece73f59e49e5ce7 100644 --- a/src/components/Authorization/Authorization.tsx +++ b/src/components/Authorization/Authorization.tsx @@ -1,12 +1,9 @@ import React, { ComponentType, FC, useContext } from 'react'; import { BlurCircular } from '@material-ui/icons'; import { NonAuthRoutes } from 'api/routes'; -import { AuthContext } from 'components/AuthUser/AuthContext'; -import { Unauthorized } from 'components/NonAuthUser/Unauthorized/Unauthorized'; -import { useAuth } from 'hooks/useAuth'; -import { useRole } from 'hooks/useRole'; import { Redirect } from 'react-router-dom'; -import { CircularProgressClassKey } from '@material-ui/core'; +import { Unauthorized } from 'components/Unauthorized/Unauthorized'; +import { AuthContext } from 'components/Auth/AuthContext'; const HandleIsAuth: FC<{ isAuth: boolean }> = ({ isAuth }) => isAuth ? ( @@ -21,10 +18,6 @@ interface WithAuthProps { allowedRoles: string[]; } -interface Props extends WithAuthProps { - children: React.ReactNode; -} - /* eslint-disable react/jsx-props-no-spreading */ /** * @@ -32,20 +25,21 @@ interface Props extends WithAuthProps { * This creates a "personal area" in the working implementation. * @returns {FC<T>} wrapped component. */ -export const withAuthorization = <T extends WithAuthProps = WithAuthProps>( + +export const withAuthorization = (allowedRoles: string[]) => < + T extends WithAuthProps = WithAuthProps +>( WrappedComponent: React.ComponentType<T>, ): FC<T> => { // Creating the inner component. The calculated Props type here is the where the magic happens. const ComponentWithAuthorization: FC<T> = ( props: Omit<T, keyof WithAuthProps>, ) => { - const { allowedRoles } = props as T; - const { role, isAuth } = useContext(AuthContext); console.log(`ROLE ${role} AUTH ${isAuth}`); /* eslint-disable no-nested-ternary */ - return typeof isAuth === null || role === null ? ( + return typeof isAuth === null && role === null ? ( <BlurCircular /> ) : // props comes afterwards so the can override the default ones. allowedRoles.includes(role) && isAuth ? ( diff --git a/src/components/AuthUser/Dashboard/Dashboard.tsx b/src/components/Dashboard/Dashboard.tsx similarity index 68% rename from src/components/AuthUser/Dashboard/Dashboard.tsx rename to src/components/Dashboard/Dashboard.tsx index 5e0c5895bc303b31e5becefb0f61fa023d9bc9c3..4453cc5ef571c2c7d356fce1bf1579767f11c72a 100644 --- a/src/components/AuthUser/Dashboard/Dashboard.tsx +++ b/src/components/Dashboard/Dashboard.tsx @@ -2,9 +2,9 @@ import React, { FC } from 'react'; import Container from '@material-ui/core/Container'; import { Route, useRouteMatch } from 'react-router-dom'; import { AuthRoutes } from 'api/routes'; -import { HomePage } from 'components/AuthUser/Dashboard/HomePage/HomePage'; -import { ProfilePage } from 'components/AuthUser/Dashboard/ProfilePage/ProfilePage'; -import { ReservationPage } from 'components/AuthUser/Dashboard/ReservationPage/ReservationPage'; +import { HomePage } from './HomePage/HomePage'; +import { ProfilePage } from './ProfilePage/ProfilePage'; +import { ReservationPage } from './ReservationPage/ReservationPage'; export const Dashboard: FC = () => { const { path } = useRouteMatch(); diff --git a/src/components/AuthUser/Dashboard/HomePage/HomePage.tsx b/src/components/Dashboard/HomePage/HomePage.tsx similarity index 85% rename from src/components/AuthUser/Dashboard/HomePage/HomePage.tsx rename to src/components/Dashboard/HomePage/HomePage.tsx index 49e246d6dd5795cf7e1f523bf0d967eff06fc57a..f472faaa7462563dcbbe01f4af7492996a383fea 100644 --- a/src/components/AuthUser/Dashboard/HomePage/HomePage.tsx +++ b/src/components/Dashboard/HomePage/HomePage.tsx @@ -10,12 +10,11 @@ import { MuiThemeProvider, Container, } from '@material-ui/core'; -import { MapElement } from 'components/AuthUser/Dashboard/HomePage/MapElement'; -import { NavBarLogin } from 'components/AuthUser/Dashboard/HomePage/NavBarLogin'; -import { Numbers } from 'components/AuthUser/Dashboard/HomePage/Numbers'; -import { Steps } from 'components/AuthUser/Dashboard/HomePage/Steps'; -import { NavBar } from 'components/AuthUser/Dashboard/HomePage/NavBar'; -import { Reservation } from 'components/AuthUser/Dashboard/ReservationPage/Reservation/Reservation'; +import { MapElement } from 'components/Dashboard/HomePage/MapElement'; +import { NavBar } from 'components/Dashboard/HomePage/NavBar'; +import { Numbers } from 'components/Dashboard/HomePage/Numbers'; +import { Steps } from 'components/Dashboard/HomePage/Steps'; +import { Reservation } from '../ReservationPage/Reservation/Reservation'; let themeResp = createMuiTheme(); themeResp = responsiveFontSizes(themeResp); diff --git a/src/components/AuthUser/Dashboard/HomePage/MapElement.tsx b/src/components/Dashboard/HomePage/MapElement.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/HomePage/MapElement.tsx rename to src/components/Dashboard/HomePage/MapElement.tsx diff --git a/src/components/AuthUser/Dashboard/HomePage/NavBar.tsx b/src/components/Dashboard/HomePage/NavBar.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/HomePage/NavBar.tsx rename to src/components/Dashboard/HomePage/NavBar.tsx diff --git a/src/components/AuthUser/Dashboard/HomePage/NavBarLogin.tsx b/src/components/Dashboard/HomePage/NavBarLogin.tsx similarity index 89% rename from src/components/AuthUser/Dashboard/HomePage/NavBarLogin.tsx rename to src/components/Dashboard/HomePage/NavBarLogin.tsx index b81244dc57a0854d76edbd50dd069e58e6286f93..e37413e0ddd4d1cd44a60f9eb517e09c0560ee5e 100644 --- a/src/components/AuthUser/Dashboard/HomePage/NavBarLogin.tsx +++ b/src/components/Dashboard/HomePage/NavBarLogin.tsx @@ -3,8 +3,8 @@ import { makeStyles } from '@material-ui/core/styles'; import { Tabs, Tab } from '@material-ui/core'; import LockIcon from '@material-ui/icons/Lock'; -import { Link, useHistory } from 'react-router-dom'; -import { NonAuthRoutes } from 'api/routes'; +import { useHistory } from 'react-router-dom'; +import { AuthRoutes } from 'api/routes'; const useStyles = makeStyles(() => ({ tabs: { @@ -53,7 +53,7 @@ export const NavBarLogin: FC = () => { TabIndicatorProps={{ style: { display: 'none' } }} > <Tab - value={`/auth${NonAuthRoutes.signIn}`} + value={`${AuthRoutes.dashboard}${AuthRoutes.home}`} label="Login" icon={<LockIcon className={classes.tabIcon} />} className={`${classes.tabPan} ${classes.rightAlign}`} diff --git a/src/components/AuthUser/Dashboard/HomePage/Numbers.tsx b/src/components/Dashboard/HomePage/Numbers.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/HomePage/Numbers.tsx rename to src/components/Dashboard/HomePage/Numbers.tsx diff --git a/src/components/AuthUser/Dashboard/HomePage/Steps.tsx b/src/components/Dashboard/HomePage/Steps.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/HomePage/Steps.tsx rename to src/components/Dashboard/HomePage/Steps.tsx diff --git a/src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.md b/src/components/Dashboard/ProfilePage/ProfilePage.md similarity index 100% rename from src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.md rename to src/components/Dashboard/ProfilePage/ProfilePage.md diff --git a/src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.test.tsx b/src/components/Dashboard/ProfilePage/ProfilePage.test.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.test.tsx rename to src/components/Dashboard/ProfilePage/ProfilePage.test.tsx diff --git a/src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.tsx b/src/components/Dashboard/ProfilePage/ProfilePage.tsx similarity index 60% rename from src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.tsx rename to src/components/Dashboard/ProfilePage/ProfilePage.tsx index 1f52c2442fb1a57c1f610d1348f6f32fa05fb228..2856a225f1f4fe806dece906f90bbd143a6f30a3 100644 --- a/src/components/AuthUser/Dashboard/ProfilePage/ProfilePage.tsx +++ b/src/components/Dashboard/ProfilePage/ProfilePage.tsx @@ -1,16 +1,18 @@ -import React, { FC } from 'react'; +import React, { FC, useContext } from 'react'; import Button from '@material-ui/core/Button'; import axios from 'axios'; import { NonAuthRoutes } from 'api/routes'; import { useHistory } from 'react-router-dom'; +import { AuthContext } from 'components/Auth/AuthContext'; export const ProfilePage: FC = () => { const history = useHistory(); - + const { setIsAuth } = useContext(AuthContext); const logout = (): void => { - axios - .get('/api/web/login/logout') - .then(() => history.replace(NonAuthRoutes.home)); + axios.get('/api/web/login/logout').then(() => { + setIsAuth(false); + history.replace(NonAuthRoutes.home); + }); }; return ( diff --git a/src/components/AuthUser/Dashboard/ReservationPage/Reservation/Reservation.tsx b/src/components/Dashboard/ReservationPage/Reservation/Reservation.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/ReservationPage/Reservation/Reservation.tsx rename to src/components/Dashboard/ReservationPage/Reservation/Reservation.tsx diff --git a/src/components/AuthUser/Dashboard/ReservationPage/ReservationPage.test.tsx b/src/components/Dashboard/ReservationPage/ReservationPage.test.tsx similarity index 100% rename from src/components/AuthUser/Dashboard/ReservationPage/ReservationPage.test.tsx rename to src/components/Dashboard/ReservationPage/ReservationPage.test.tsx diff --git a/src/components/AuthUser/Dashboard/ReservationPage/ReservationPage.tsx b/src/components/Dashboard/ReservationPage/ReservationPage.tsx similarity index 97% rename from src/components/AuthUser/Dashboard/ReservationPage/ReservationPage.tsx rename to src/components/Dashboard/ReservationPage/ReservationPage.tsx index 9e176c0334e8f86cf95391893e51a7d4676c8a48..a1672f155d13655f89eda368246cdad5d29f34fe 100644 --- a/src/components/AuthUser/Dashboard/ReservationPage/ReservationPage.tsx +++ b/src/components/Dashboard/ReservationPage/ReservationPage.tsx @@ -19,8 +19,8 @@ import { import AddIcon from '@material-ui/icons/Add'; import Fab from '@material-ui/core/Fab'; -import { Reservation } from 'components/AuthUser/Dashboard/ReservationPage/Reservation/Reservation'; -import { NavBar } from '../HomePage/NavBar'; +import { NavBar } from 'components/Dashboard/HomePage/NavBar'; +import { Reservation } from 'components/Dashboard/ReservationPage/Reservation/Reservation'; let themeResp = createMuiTheme(); themeResp = responsiveFontSizes(themeResp); diff --git a/src/components/NonAuthUser/LandingPage/LandingPage.tsx b/src/components/LandingPage/LandingPage.tsx similarity index 88% rename from src/components/NonAuthUser/LandingPage/LandingPage.tsx rename to src/components/LandingPage/LandingPage.tsx index 2e7dc1da878f0f7f843f23ce9130b935d23c8319..1a07d866636cbadb0848e971b2cf94d64b090241 100644 --- a/src/components/NonAuthUser/LandingPage/LandingPage.tsx +++ b/src/components/LandingPage/LandingPage.tsx @@ -10,10 +10,10 @@ import { MuiThemeProvider, Container, } from '@material-ui/core'; -import { MapElement } from 'components/AuthUser/Dashboard/HomePage/MapElement'; -import { NavBarLogin } from 'components/AuthUser/Dashboard/HomePage/NavBarLogin'; -import { Numbers } from 'components/AuthUser/Dashboard/HomePage/Numbers'; -import { Steps } from 'components/AuthUser/Dashboard/HomePage/Steps'; +import { MapElement } from 'components/Dashboard/HomePage/MapElement'; +import { NavBarLogin } from 'components/Dashboard/HomePage/NavBarLogin'; +import { Numbers } from 'components/Dashboard/HomePage/Numbers'; +import { Steps } from 'components/Dashboard/HomePage/Steps'; let themeResp = createMuiTheme(); themeResp = responsiveFontSizes(themeResp); diff --git a/src/components/NonAuthUser/LandingPage/TeamPage.tsx b/src/components/NonAuthUser/LandingPage/TeamPage.tsx deleted file mode 100644 index b0a945e8347fdc1b4c1027ea1cf3a03df91eb95d..0000000000000000000000000000000000000000 --- a/src/components/NonAuthUser/LandingPage/TeamPage.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import React, { FC } from 'react'; - -export const TeamPage: FC = () => ( - <> - <section> - <h2>These are the students of the MoveAid project</h2> - - <div> - <h3>Alberto Defendi</h3> - <table> - <tr> - <td> </td> - <td> - <p> - Age: 19 <br /> - Role: Front End Developer - <br /> - Hobbys: Sports, maths - <br /> - </p> - </td> - </tr> - </table> - </div> - - <div> - <h3>Andrea Esposito</h3> - <table> - <tr> - <td> </td> - <td> - <p> - Age: 19 <br /> - Role: xxxxx - <br /> - Hobbys: xxxxxxxxx - <br /> - </p> - </td> - </tr> - </table> - </div> - - <div> - <h3>Marco Marinello</h3> - <table> - <tr> - <td> </td> - <td> - <p> - Age: 19 <br /> - Role: xxxxx - <br /> - Hobbys: xxxxxxxxx - <br /> - </p> - </td> - </tr> - </table> - </div> - - <div> - <h3>Francesco Mazzini</h3> - <table> - <tr> - <td> </td> - <td> - <p> - <strong>Age:</strong> 19 <br /> - <br /> - <strong>Role:</strong> Front End Developer - <br /> - <br /> - <strong>Hobbys:</strong> I like Graphic and Programing. - <br /> - I also like playing videogames, hanging out <br /> - with friends, watching tv series and <br /> - training in gym! - </p> - </td> - </tr> - </table> - </div> - </section> - </> -); diff --git a/src/components/NonAuthUser/LandingPage/assets/alberto.png b/src/components/NonAuthUser/LandingPage/assets/alberto.png deleted file mode 100644 index a4030b2bda405381ab60d5ba68b7ea7c057ebefe..0000000000000000000000000000000000000000 Binary files a/src/components/NonAuthUser/LandingPage/assets/alberto.png and /dev/null differ diff --git a/src/components/NonAuthUser/LandingPage/assets/logo04Circle.png b/src/components/NonAuthUser/LandingPage/assets/logo04Circle.png deleted file mode 100644 index 4e5a76b9f51d9580a7f6b6b78f076f0a4a821f48..0000000000000000000000000000000000000000 Binary files a/src/components/NonAuthUser/LandingPage/assets/logo04Circle.png and /dev/null differ diff --git a/src/components/NonAuthUser/LandingPage/assets/pp.jpg b/src/components/NonAuthUser/LandingPage/assets/pp.jpg deleted file mode 100644 index 593205f4d623a459904abdcfb13c8517e4ccf666..0000000000000000000000000000000000000000 Binary files a/src/components/NonAuthUser/LandingPage/assets/pp.jpg and /dev/null differ diff --git a/src/components/NonAuthUser/NotFound/NotFound.md b/src/components/NotFound/NotFound.md similarity index 100% rename from src/components/NonAuthUser/NotFound/NotFound.md rename to src/components/NotFound/NotFound.md diff --git a/src/components/NonAuthUser/NotFound/NotFound.test.tsx b/src/components/NotFound/NotFound.test.tsx similarity index 100% rename from src/components/NonAuthUser/NotFound/NotFound.test.tsx rename to src/components/NotFound/NotFound.test.tsx diff --git a/src/components/NonAuthUser/NotFound/NotFound.tsx b/src/components/NotFound/NotFound.tsx similarity index 100% rename from src/components/NonAuthUser/NotFound/NotFound.tsx rename to src/components/NotFound/NotFound.tsx diff --git a/src/components/PrivateRoute/PrivateRoute.tsx b/src/components/PrivateRoute/PrivateRoute.tsx deleted file mode 100644 index 6360e711b17e388405f7fec0a82d473278919ce0..0000000000000000000000000000000000000000 --- a/src/components/PrivateRoute/PrivateRoute.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React, { useContext } from 'react'; -import { Route, Redirect, RouteProps } from 'react-router-dom'; -import { NonAuthRoutes } from 'api/routes'; -import { AuthContext } from 'components/AuthUser/AuthContext'; - -/** - * A wrapper for <Route> that redirects to the login screen if you're not yet authenticated. - * Every non-public route must be wrapped with this component. - * */ -type Props = { - Component: React.FC<RouteProps>; - path: string; - requiredRoles: string[]; -}; - -/* eslint-disable react/jsx-props-no-spreading */ -export const PrivateRoute = ({ - Component, - path, - requiredRoles, -}: Props): JSX.Element => { - const { role, isAuth } = useContext(AuthContext); - - // Check if the role is contained in the roles array (passed as props). - const userHasRequiredRole = requiredRoles.includes(role); - - const message = userHasRequiredRole - ? 'Please log in to view this page' - : 'Your role is not allowed'; - - return ( - <Route - exact={false} - path={path} - render={(props: RouteProps) => - isAuth && userHasRequiredRole ? ( - <Component {...props} /> - ) : ( - <Redirect - to={{ - pathname: !userHasRequiredRole - ? `${NonAuthRoutes.auth}${NonAuthRoutes.signIn}` - : NonAuthRoutes.unauthorized, - state: { - message, - requestedPath: path, - }, - }} - /> - ) - } - /> - ); -}; diff --git a/src/components/RestrictedRoute/RestrictedRoute.tsx b/src/components/RestrictedRoute/RestrictedRoute.tsx deleted file mode 100644 index 2f10632cba2b63271465c060ef4758144e250ea0..0000000000000000000000000000000000000000 --- a/src/components/RestrictedRoute/RestrictedRoute.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import { Route, Redirect, RouteProps } from 'react-router-dom'; -import { AuthRoutes } from 'api/routes'; -import { isAuthenticated } from 'api/isAuthenticated'; -import { CircularProgress } from '@material-ui/core'; - -type Props = { - /** Children where the authenticated user will be redirected. */ - Component: React.FC<RouteProps>; - /** Path of the children. */ - path: string; -}; - -/** - * Wrapper for Route that basing on if the user is authenticated, - * redirects to: - * - Entry point of the private route (the homepage); - * - Login page. - */ - -/* eslint-disable react/jsx-props-no-spreading */ -export const RestrictedRoute = ({ Component, path }: Props): JSX.Element => { - const [isAuth, setIsAuth] = useState<boolean>(false); - const [isLoading, setLoading] = useState<boolean>(false); - - useEffect(() => { - isAuthenticated().then((res) => { - setIsAuth(res); - setLoading(true); - }); - }, [isAuth, setLoading]); - - return !isLoading ? ( - <CircularProgress /> - ) : ( - <Route - path={path} - render={(props: RouteProps) => - !isAuth ? ( - // Redirect to component. - <Component {...props} /> - ) : ( - // Redirect to homepage. - <Redirect - to={{ pathname: `${AuthRoutes.dashboard}${AuthRoutes.home}` }} - /> - ) - } - /> - ); -}; diff --git a/src/components/NonAuthUser/Unauthorized/Unauthorized.md b/src/components/Unauthorized/Unauthorized.md similarity index 100% rename from src/components/NonAuthUser/Unauthorized/Unauthorized.md rename to src/components/Unauthorized/Unauthorized.md diff --git a/src/components/NonAuthUser/Unauthorized/Unauthorized.test.tsx b/src/components/Unauthorized/Unauthorized.test.tsx similarity index 100% rename from src/components/NonAuthUser/Unauthorized/Unauthorized.test.tsx rename to src/components/Unauthorized/Unauthorized.test.tsx diff --git a/src/components/NonAuthUser/Unauthorized/Unauthorized.tsx b/src/components/Unauthorized/Unauthorized.tsx similarity index 100% rename from src/components/NonAuthUser/Unauthorized/Unauthorized.tsx rename to src/components/Unauthorized/Unauthorized.tsx