source: frontend/src/App.js@ a26f6a1

Last change on this file since a26f6a1 was a26f6a1, checked in by Danilo <danilo.najkov@…>, 2 years ago

full auth flow

  • Property mode set to 100644
File size: 2.7 KB
Line 
1import './App.css';
2import {Route, BrowserRouter as Router, Navigate, Routes, useNavigate} from "react-router-dom";
3import axios from 'axios'
4import env from './env'
5
6import {Spin} from "antd";
7import React, {useEffect, useState} from "react";
8import {Login, Register} from "./Auth/auth";
9import Dashboard from "./Dashboard";
10import Reservations from "./Dashboard/Reservations";
11import FrontPage from "./FrontPage";
12import Restaurant from "./Dashboard/Restaurant";
13import Menu from "./Dashboard/Menu";
14import Review from "./Dashboard/Review";
15import Confirm from "./Auth/Confirm";
16import SendConfirm from "./Auth/SendConfirm";
17import SendReset from "./Auth/SendReset";
18import Reset from "./Auth/Reset";
19
20
21function App() {
22 const [user, setUser] = useState(undefined)
23 const [loading, setLoading] = useState(true)
24 useEffect(()=>{
25 getUser()
26 },[])
27
28 const getUser = () => {
29 setLoading(true)
30 axios.get(env.api+'Users/authed',{headers:{Authorization:localStorage.getItem('Auth')}}).then(res=>{
31 console.log(res.data)
32 setUser(res.data)
33 setLoading(false)
34 })
35 }
36 const logout = () => {
37 setUser(undefined);
38 localStorage.removeItem('Auth');
39 window.location.replace('/')
40 }
41 return (
42 <div style={{textAlign:'center'}}>
43 <Router>
44 <Routes>
45 <Route path="/dashboard" element={loading ? <Spin /> : user ? (user.isAdmin ? <Dashboard setUser={setUser}/> : <Navigate to="/" replace={true} />) : <Navigate to="/login" replace={true} />}>
46 <Route path="/dashboard" element={<Restaurant/>}/>
47 <Route path="/dashboard/menu" element={<Menu/>}/>
48 <Route path="/dashboard/reservations" element={<Reservations/>}/>
49 <Route path="/dashboard/reviews" element={<Review/>}/>
50 <Route path="/dashboard/todo" element={'todo'}/>
51 </Route>
52 <Route path="/login" element={loading ? <Spin /> : !user ? <Login setUser={setUser}/> : <Navigate to="/dashboard" replace={true} />}/>
53 <Route path="/register" element={loading ? <Spin /> : !user ? <Register setUser={setUser}/> : <Navigate to="/dashboard" replace={true} />}/>
54 <Route path="/reset-password" element={loading ? <Spin /> : <SendReset/>}/>
55 <Route path="/reset" element={loading ? <Spin /> : <Reset/>}/>
56 <Route path="/confirm" element={loading ? <Spin /> : <Confirm setUser={setUser} user={user}/>}/>
57 <Route path="/confirm-email" element={loading ? <Spin /> : <SendConfirm setUser={setUser} user={user}/>}/>
58 <Route path="/" element={<FrontPage user={user} logout={logout}/>}/>
59 </Routes>
60 </Router>
61 </div>
62 );
63}
64
65export default App;
Note: See TracBrowser for help on using the repository browser.