source: reactapp/src/App.js@ 6eba109

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

implemented authentication in react

  • Property mode set to 100644
File size: 1.6 KB
Line 
1import Professor from "./Pages/Professor";
2import SearchResults from "./Pages/SearchResults";
3import Login from "./Pages/Login";
4import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
5import Home from "./Pages/Home";
6import User from "./Pages/User";
7import { useEffect, useState, useMemo } from "react";
8import AuthApi from "./api/AuthApi";
9import Cookies from "js-cookie";
10
11export default function App() {
12 const [auth, setAuth] = useState(false);
13 const variableAuth = useMemo(() => ({ auth, setAuth }), [auth]);
14
15 const readCookie = () => {
16 const session = Cookies.get("JSESSIONID");
17 if (session) {
18 setAuth(true); // go stava true ako postoi takvo cookie (zasto auth=false na sekoe renderiranje)
19 }
20 };
21
22 useEffect(() => {
23 readCookie();
24 }, []);
25
26 const ProtectedRoute = ({ auth, children }) => {
27 if (!auth) {
28 return <Navigate to="/login" replace />;
29 }
30 return children;
31 };
32
33 return (
34 <AuthApi.Provider value={variableAuth}>
35 <BrowserRouter>
36 <Routes>
37 <Route path="/" element={<Home />}>
38 <Route path="login" element={<Login />}></Route>
39 <Route path="professor">
40 <Route path=":professorId" element={<Professor />} />
41 </Route>
42 <Route path="search" element={<SearchResults />}></Route>
43 <Route
44 path="user"
45 element={
46 <ProtectedRoute auth={auth}>
47 <User />
48 </ProtectedRoute>
49 }
50 ></Route>
51 </Route>
52 </Routes>
53 </BrowserRouter>
54 </AuthApi.Provider>
55 );
56}
Note: See TracBrowser for help on using the repository browser.