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