ajout authentification admin/user

This commit is contained in:
AISSI-JUDE-CHRIST
2026-06-11 22:23:39 +02:00
parent 8f3451adc0
commit 4ae227d79d
7 changed files with 193 additions and 16 deletions
+21 -6
View File
@@ -1,4 +1,4 @@
import { Routes, Route } from 'react-router-dom';
import { Routes, Route, Navigate } from 'react-router-dom';
import Layout from './components/Layout';
import Home from './pages/Home';
import Books from './pages/Books';
@@ -8,19 +8,34 @@ import NotFound from './pages/NotFound';
import AddBook from './pages/AddBook';
import BookDetail from './pages/BookDetail';
import Customers from './pages/Customers';
import Login from './pages/Login';
import { useAuth } from './context/AuthContext';
function RequireAuth({ children }) {
const { user } = useAuth();
return user ? children : <Navigate to="/login" replace />;
}
function RequireAdmin({ children }) {
const { user } = useAuth();
if (!user) return <Navigate to="/login" replace />;
if (user.role !== 'admin') return <Navigate to="/" replace />;
return children;
}
export default function App() {
return (
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/" element={<Layout />}>
<Route index element={<Home />} />
<Route path="books" element={<Books />} />
<Route path="orders" element={<Orders />} />
<Route path="profile" element={<Profile />} />
<Route path="books/:bookId" element={<RequireAuth><BookDetail /></RequireAuth>} />
<Route path="books/new" element={<RequireAdmin><AddBook /></RequireAdmin>} />
<Route path="orders" element={<RequireAuth><Orders /></RequireAuth>} />
<Route path="profile" element={<RequireAuth><Profile /></RequireAuth>} />
<Route path="customers" element={<RequireAdmin><Customers /></RequireAdmin>} />
<Route path="*" element={<NotFound />} />
<Route path="books/new" element={<AddBook />} />
<Route path="books/:bookId" element={<BookDetail />} />
<Route path="customers" element={<Customers />} />
</Route>
</Routes>
);