diff --git a/epoch_frontend/src/modules/ProtectedRoute.js b/epoch_frontend/src/modules/ProtectedRoute.js new file mode 100644 index 0000000..859494d --- /dev/null +++ b/epoch_frontend/src/modules/ProtectedRoute.js @@ -0,0 +1,28 @@ +import React, { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; + +// Utility function to get the "epoch_session_id" cookie +export function getSessionCookie() { + return document.cookie.split('; ').find(row => row.startsWith('epoch_session_id=')); +} + +// Utility function to check if the session is active based on the "epoch_session_id" cookie +export function isSessionActive() { + return !!getSessionCookie(); +} + +const ProtectedRoute = ({ children }) => { + const navigate = useNavigate(); + + useEffect(() => { + // Check if the session is active; if not, redirect to the login page + if (!isSessionActive()) { + navigate('/epoch/login'); + } + }, [navigate]); + + // Render the children if the session is active + return children; +}; + +export default ProtectedRoute; diff --git a/epoch_frontend/src/modules/Router.js b/epoch_frontend/src/modules/Router.js index 8a3eefb..7a65861 100644 --- a/epoch_frontend/src/modules/Router.js +++ b/epoch_frontend/src/modules/Router.js @@ -1,5 +1,6 @@ import React from 'react'; import {BrowserRouter, Route, Routes, Navigate, useParams} from 'react-router-dom'; +import ProtectedRoute from './ProtectedRoute'; import Login from '../pages/login'; import Register from '../pages/register'; @@ -28,14 +29,14 @@ function Router() { } /> } /> - } /> + } /> } /> } /> - } /> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> {/* Catch-all route for 404 */} @@ -60,4 +61,4 @@ function ProfileRedirect() { } } -export default Router; +export default Router; \ No newline at end of file