Files
2026-DEV-BUT3/my-library/src/App.jsx
T

46 lines
1.8 KiB
React
Raw Normal View History

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
);
}