source: reactapp/src/App.js@ cae16b5

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

implemented registration in react

  • 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 Home from "./Pages/Home";
7import UserDashboard from "./Pages/UserDashboard";
8import { useEffect, useState, useMemo } from "react";
9import AuthApi from "./api/AuthApi";
10import Cookies from "js-cookie";
11import axios from "./api/axios";
12import JSOG from "jsog";
13
14export default function App() {
15 const [auth, setAuth] = useState(false);
16 const [user, setUser] = useState(null);
17 const [userLoaded, setUserLoaded] = useState(false);
18 const variableAuth = useMemo(() => ({ auth, setAuth }), [auth]);
19 const [authLoaded, setAuthLoaded] = useState(false);
20
21 const fetchUser = async () => {
22 try {
23 const response = await axios.get(
24 "http://192.168.0.17:8080/secure/currentUser",
25 { withCredentials: true }
26 );
27 var cyclicGraph = await response.data;
28 var jsogStructure = JSOG.encode(cyclicGraph);
29 cyclicGraph = JSOG.decode(jsogStructure);
30 setUser(cyclicGraph);
31 setUserLoaded(true);
32 } catch (error) {
33 console.log("Fetching error", error);
34 }
35 };
36
37 const readCookie = async () => {
38 const session = Cookies.get("JSESSIONID");
39 if (session) {
40 setAuth(true);
41 fetchUser();
42 } else {
43 setAuth(false);
44 }
45 setAuthLoaded(true);
46 };
47
48 useEffect(() => {
49 readCookie();
50 }, []);
51
52 const ProtectedRoute = ({ auth, children }) => {
53 if (authLoaded) {
54 if (!auth) {
55 return <Navigate to="/login" replace />;
56 }
57 return children;
58 } else {
59 return <div>се вчитува cookie...</div>;
60 }
61 };
62
63 return (
64 <AuthApi.Provider value={variableAuth}>
65 <BrowserRouter>
66 <Routes>
67 <Route
68 path="/"
69 element={<Home user={user} userLoaded={userLoaded} />}
70 >
71 <Route path="login" element={<Login />}></Route>
72 <Route path="registration" element={<Registration />}></Route>
73 <Route path="professor">
74 <Route
75 path=":professorId"
76 element={<Professor user={user} userLoaded={userLoaded} />}
77 />
78 </Route>
79 <Route path="search" element={<SearchResults />}></Route>
80 <Route
81 path="user_dashboard"
82 element={
83 <ProtectedRoute auth={auth}>
84 {<UserDashboard user={user} userLoaded={userLoaded} />}
85 </ProtectedRoute>
86 }
87 ></Route>
88 </Route>
89 </Routes>
90 </BrowserRouter>
91 </AuthApi.Provider>
92 );
93}
Note: See TracBrowser for help on using the repository browser.