2026-06-11 22:23:39 +02:00
|
|
|
import { Routes, Route, Navigate } from 'react-router-dom';
|
2026-06-10 16:24:37 -04:00
|
|
|
import Layout from './components/Layout';
|
2026-03-16 16:43:17 +01:00
|
|
|
import Home from './pages/Home';
|
2026-06-10 16:24:37 -04:00
|
|
|
import Books from './pages/Books';
|
|
|
|
|
import Orders from './pages/Orders';
|
|
|
|
|
import Profile from './pages/Profile';
|
|
|
|
|
import NotFound from './pages/NotFound';
|
2026-06-11 05:15:30 -04:00
|
|
|
import AddBook from './pages/AddBook';
|
2026-06-11 05:52:26 -04:00
|
|
|
import BookDetail from './pages/BookDetail';
|
2026-06-11 07:27:37 -04:00
|
|
|
import Customers from './pages/Customers';
|
2026-06-11 22:23:39 +02:00
|
|
|
import Login from './pages/Login';
|
2026-06-11 23:08:21 +02:00
|
|
|
import Reservations from './pages/Reservations';
|
2026-06-13 01:11:27 +02:00
|
|
|
import Returns from './pages/Returns';
|
2026-06-11 22:23:39 +02:00
|
|
|
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;
|
|
|
|
|
}
|
2026-03-16 16:43:17 +01:00
|
|
|
|
|
|
|
|
export default function App() {
|
|
|
|
|
return (
|
2026-06-10 16:24:37 -04:00
|
|
|
<Routes>
|
2026-06-11 22:23:39 +02:00
|
|
|
<Route path="/login" element={<Login />} />
|
2026-06-10 16:24:37 -04:00
|
|
|
<Route path="/" element={<Layout />}>
|
|
|
|
|
<Route index element={<Home />} />
|
|
|
|
|
<Route path="books" element={<Books />} />
|
2026-06-11 22:23:39 +02:00
|
|
|
<Route path="books/:bookId" element={<RequireAuth><BookDetail /></RequireAuth>} />
|
|
|
|
|
<Route path="books/new" element={<RequireAdmin><AddBook /></RequireAdmin>} />
|
|
|
|
|
<Route path="orders" element={<RequireAuth><Orders /></RequireAuth>} />
|
2026-06-11 23:08:21 +02:00
|
|
|
<Route path="reservations" element={<RequireAuth><Reservations /></RequireAuth>} />
|
2026-06-11 22:23:39 +02:00
|
|
|
<Route path="profile" element={<RequireAuth><Profile /></RequireAuth>} />
|
|
|
|
|
<Route path="customers" element={<RequireAdmin><Customers /></RequireAdmin>} />
|
2026-06-13 01:11:27 +02:00
|
|
|
<Route path="returns" element={<RequireAdmin><Returns /></RequireAdmin>} />
|
2026-06-10 16:24:37 -04:00
|
|
|
<Route path="*" element={<NotFound />} />
|
|
|
|
|
</Route>
|
|
|
|
|
</Routes>
|
2026-03-16 16:43:17 +01:00
|
|
|
);
|
|
|
|
|
}
|