Ignore:
Timestamp:
08/17/22 16:21:10 (23 months ago)
Author:
unknown <mlviktor23@…>
Branches:
main
Children:
702ca77
Parents:
800779d
Message:

implemented authentication in react

File:
1 edited

Legend:

Unmodified
Added
Removed
  • reactapp/src/App.js

    r800779d r6eba109  
    22import SearchResults from "./Pages/SearchResults";
    33import Login from "./Pages/Login";
    4 import { BrowserRouter, Routes, Route } from "react-router-dom";
     4import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
    55import 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";
    610
    711export 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
    833  return (
    9     <BrowserRouter>
    10       <Routes>
    11         <Route path="/" element={<Home />}>
    12           <Route path="login" element={<Login />}></Route>
    13           <Route path="professor">
    14             <Route path=":professorId" element={<Professor />} />
     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>
    1551          </Route>
    16           <Route path="search" element={<SearchResults />}></Route>
    17         </Route>
    18       </Routes>
    19     </BrowserRouter>
     52        </Routes>
     53      </BrowserRouter>
     54    </AuthApi.Provider>
    2055  );
    2156}
Note: See TracChangeset for help on using the changeset viewer.