Skip to content
Snippets Groups Projects
App.js 1.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • import "./App.css";
    
    import React, { useContext } from "react";
    
    import {
      BrowserRouter as Router,
      Route,
      Routes,
      Navigate,
    } from "react-router-dom";
    
    
    import { UserProvider, UserContext } from "./util/UserContext";
    
    
    Federico Hurtado's avatar
    Federico Hurtado committed
    import Home from "./components/Home";
    
    import PracticeHome from "./components/APITest/PracticeHome";
    
    // Custom Protected Route component that checks if the user is authenticated
    const ProtectedRoute = ({ children }) => {
      const { user } = useContext(UserContext);
    
    Federico Hurtado's avatar
    Federico Hurtado committed
      console.log("ProtectedRoute - isAuthenticated:", user.isAuthenticated);
      console.log("ProtectedRoute - permission:", user.permission);
    
      return user.permission === "admin" ? children : <Navigate to="/login" />;
    
    
    function App() {
      return (
    
        <UserProvider>
          <Router>
            <div className="App">
              <Routes>
    
                {/* Protected Home route, accessible only if authenticated */}
    
    Federico Hurtado's avatar
    Federico Hurtado committed
                  element={
                    <ProtectedRoute>
                      <Home />
                    </ProtectedRoute>
                  }
                />
                <Route
                  path="/practice"
    
                  element={
                    <ProtectedRoute>
                      <PracticeHome />
                    </ProtectedRoute>
                  }
    
                />
                {/* Login route */}
                <Route path="/login" element={<Login />} />
              </Routes>
            </div>
          </Router>
        </UserProvider>