source: reactapp/src/App.js@ c68150f

main
Last change on this file since c68150f was c68150f, checked in by unknown <mlviktor23@…>, 20 months ago

left: moderation, oAuth, messaging

  • Property mode set to 100644
File size: 2.4 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 Home from "./Pages/Home";
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";
16
17export default function App() {
18 const [auth, setAuth] = useState(false);
19 const variableAuth = useMemo(() => ({ auth, setAuth }), [auth]);
20 const [authLoaded, setAuthLoaded] = useState(false);
21
22 const readCookie = async () => {
23 const session = Cookies.get("JSESSIONID");
24 if (session) {
25 setAuth(true);
26 } else {
27 setAuth(false);
28 }
29 setAuthLoaded(true);
30 };
31
32 useEffect(() => {
33 document.title = "profesori.mk";
34 readCookie();
35 }, []);
36
37 const ProtectedRoute = ({ auth, children }) => {
38 if (authLoaded) {
39 if (!auth) {
40 return <Navigate to="/login" replace />;
41 }
42 return children;
43 } else {
44 return <div>се вчитува cookie...</div>;
45 }
46 };
47
48 return (
49 <AuthApi.Provider value={variableAuth}>
50 <BrowserRouter>
51 <Routes>
52 <Route path="/" element={<Home />}>
53 <Route path="login" element={<Login />}></Route>
54 <Route path="registration" element={<Registration />}></Route>
55 <Route path="professor">
56 <Route path=":professorId" element={<Professor />} />
57 </Route>
58 <Route path="university/:universityId" element={<University />} />
59 <Route path="faculty/:facultyId" element={<Faculty />} />
60 <Route path="subject/:subjectId" element={<Subject />} />
61 <Route path="topic/:topicId" element={<Topic />} />
62 <Route path="search" element={<SearchResults />}></Route>
63 <Route
64 path="user_dashboard"
65 element={
66 <ProtectedRoute auth={auth}>{<UserDashboard />}</ProtectedRoute>
67 }
68 ></Route>
69 </Route>
70 <Route path="*" element={<NotFound />} />
71 </Routes>
72 </BrowserRouter>
73 </AuthApi.Provider>
74 );
75}
Note: See TracBrowser for help on using the repository browser.