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>