60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { Navigate, Route, Routes } from "react-router-dom";
|
|
import { AuthProvider, RequireAdmin, RequireAuth } from "./auth/AuthContext";
|
|
import { ErrorBoundary } from "./components/ErrorBoundary";
|
|
import { Toaster } from "./components/Toaster";
|
|
import Login from "./pages/Login";
|
|
import Reader from "./pages/Reader";
|
|
import Shelf from "./pages/Shelf";
|
|
import AdminLibraries from "./pages/admin/Libraries";
|
|
import AdminUsers from "./pages/admin/Users";
|
|
|
|
export default function App() {
|
|
return (
|
|
<ErrorBoundary>
|
|
<AuthProvider>
|
|
<Routes>
|
|
<Route path="/login" element={<Login />} />
|
|
<Route
|
|
path="/"
|
|
element={
|
|
<RequireAuth>
|
|
<Shelf />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/book/:id"
|
|
element={
|
|
<RequireAuth>
|
|
<Reader />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/admin/users"
|
|
element={
|
|
<RequireAuth>
|
|
<RequireAdmin>
|
|
<AdminUsers />
|
|
</RequireAdmin>
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/admin/libraries"
|
|
element={
|
|
<RequireAuth>
|
|
<RequireAdmin>
|
|
<AdminLibraries />
|
|
</RequireAdmin>
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Routes>
|
|
<Toaster />
|
|
</AuthProvider>
|
|
</ErrorBoundary>
|
|
);
|
|
}
|