diff --git a/src/App.tsx b/src/App.tsx
index d556ce101fe52be60a58258ebf49b883b7849395..b9797b0c763a2b654774ee5b4930004bfa9cfb48 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,6 +1,6 @@
 import React from 'react';
 import { Helmet } from 'react-helmet';
-import { Routes, Route, Navigate } from 'react-router-dom';
+import { Routes, Route, Navigate, Outlet } from 'react-router-dom';
 import { Toaster } from 'react-hot-toast';
 
 import { useAuth } from 'src/services/auth';
@@ -10,10 +10,14 @@ import { LoginCallback } from './modules/login/LoginCallback';
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function App() {
-  const { authToken, currentUser } = useAuth();
+  const { authToken, currentUser, isAdmin } = useAuth();
 
   const redirectToLogin = !authToken || !currentUser?.app_roles;
 
+  const ProtectedRoute = () => {
+    return isAdmin ? <Outlet /> : <Navigate to="/dashboard" />;
+  };
+
   return (
     <>
       <Helmet>
@@ -38,7 +42,9 @@ function App() {
           <Layout>
             <Routes>
               <Route path="/dashboard" element={<Dashboard />} />
-              <Route path="/users" element={<Users />} />
+              <Route path="/users" element={<ProtectedRoute />}>
+                <Route path="/users" element={<Users />} />
+              </Route>
               <Route path="*" element={<Navigate to="/dashboard" />} />
             </Routes>
           </Layout>