source: reactapp/src/App.js

main
Last change on this file was 9bf1f8d, checked in by viktor <viktor@…>, 18 months ago

prefinal

  • Property mode set to 100644
File size: 2.7 KB
Line 
1import Professor from "./Pages/Professor";
2import SearchResults from "./Pages/SearchResults";
3import Login from "./Pages/Login";
4import Registration from "./Pages/Registration";
5import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
6import Root from "./Components/Root";
7import UserDashboard from "./Pages/UserDashboard";
8import Subject from "./Pages/Subject";
9import University from "./Pages/University";
10import Faculty from "./Pages/Faculty";
11import { useEffect, useState, useMemo } from "react";
12import AuthApi from "./api/AuthApi";
13import Cookies from "js-cookie";
14import NotFound from "./Pages/NotFound";
15import Topic from "./Pages/Topic";
16import LoadingSpinner from "./Components/Styled/LoadingSpinner.style";
17import Home from "./Pages/Home";
18import PublicUserProfile from "./Pages/PublicUserProfile";
19
20export default function App() {
21 const [auth, setAuth] = useState(false);
22 const variableAuth = useMemo(() => ({ auth, setAuth }), [auth]);
23 const [authLoaded, setAuthLoaded] = useState(false);
24
25 const readCookie = async () => {
26 const session = Cookies.get("JSESSIONID");
27 if (session) {
28 setAuth(true);
29 } else {
30 setAuth(false);
31 }
32 setAuthLoaded(true);
33 };
34
35 useEffect(() => {
36 document.title = "profesori.mk";
37 readCookie();
38 }, []);
39
40 const ProtectedRoute = ({ auth, children }) => {
41 if (authLoaded) {
42 if (!auth) {
43 return <Navigate to="/login" replace />;
44 }
45 return children;
46 } else {
47 return <LoadingSpinner/>;
48 }
49 };
50
51 return (
52 <AuthApi.Provider value={variableAuth}>
53 <BrowserRouter>
54 <Routes>
55 <Route path="/" element={<Root />}>
56 <Route path="/" element={<Home/>}/>
57 <Route path="login" element={<Login />}></Route>
58 <Route path="registration" element={<Registration />}></Route>
59 <Route path="professor">
60 <Route path=":professorId" element={<Professor />} />
61 </Route>
62 <Route path="university/:universityId" element={<University />} />
63 <Route path="user/:userId" element={<PublicUserProfile />} />
64 <Route path="faculty/:facultyId" element={<Faculty />} />
65 <Route path="subject/:subjectId" element={<Subject />} />
66 <Route path="topic/:topicId" element={<Topic />} />
67 <Route path="search" element={<SearchResults />}></Route>
68 <Route
69 path="user_dashboard"
70 element={
71 <ProtectedRoute auth={auth}>{<UserDashboard />}</ProtectedRoute>
72 }
73 ></Route>
74 </Route>
75 <Route path="*" element={<NotFound />} />
76 </Routes>
77 </BrowserRouter>
78 </AuthApi.Provider>
79 );
80}
Note: See TracBrowser for help on using the repository browser.