Ignore:
Timestamp:
06/10/24 22:34:32 (3 weeks ago)
Author:
223021 <daniel.ilievski.2@…>
Branches:
main
Children:
befb988
Parents:
28b3398
Message:

Added no access page for new recruiters and admin panel for granting access

File:
1 edited

Legend:

Unmodified
Added
Removed
  • jobvista-frontend/src/App.js

    r28b3398 rb248810  
    11import logo from './logo.svg';
    22import './App.css';
    3 import {useDispatch} from "react-redux";
     3import {useDispatch, useSelector} from "react-redux";
    44import {BrowserRouter} from "react-router-dom";
    55import {Header} from "./views/static/Header";
    66import {RoutesConfig} from "./auth/RoutesConfig";
    7 import {useEffect} from "react";
     7import {useEffect, useState} from "react";
    88import {AuthActions} from "./redux/actions/authActions";
    99import {AUTH_TOKEN} from "./axios/axiosInstance";
     10import {jwtDecode} from "jwt-decode";
     11import {NoAccess} from "./views/static/NoAccess";
    1012
    1113function App() {
     
    1618    }, [dispatch])
    1719
     20    const [user, setUser] = useState(null);
     21    const [loading, setLoading] = useState(true);
     22    const auth = useSelector(state => state.auth);
     23
     24    useEffect(() => {
     25        const token = localStorage.getItem(AUTH_TOKEN);
     26        if (token !== null) {
     27            try {
     28                const decodedToken = jwtDecode(token);
     29                setUser({
     30                    name: decodedToken.name,
     31                    role: decodedToken.role,
     32                    hasAccess: auth.currentUser.access,
     33                });
     34                setLoading(false);
     35            } catch (error) {
     36                console.error('Failed to decode token', error);
     37                setLoading(false);
     38            }
     39        } else {
     40            setLoading(false);
     41        }
     42    }, [auth]);
     43
     44    if (loading) {
     45        return <NoAccess />; // Replace LoadingSpinner with your loading indicator component
     46    }
     47
    1848  return (
    1949      <div className="App">
    2050          <BrowserRouter>
    21               <Header/>
    22               <RoutesConfig/>
     51              {user === null ? (
     52                  <>
     53                      <Header />
     54                      <RoutesConfig />
     55                  </>
     56              ) : user.hasAccess ? (
     57                  <>
     58                      <Header />
     59                      <RoutesConfig />
     60                  </>
     61              ) : (
     62                  <NoAccess user={user}/>
     63              )}
     64
     65
    2366          </BrowserRouter>
    2467      </div>
Note: See TracChangeset for help on using the changeset viewer.