Sprint 8: minimale Admin-Seite (Standort/Objekt-Anlage) im Frontend
Frontend deckte bisher nur den Mitarbeiter-Kontrollflow ab, Stammdaten mussten per API/Skript angelegt werden (Test-Deployment-Lücke). /admin zeigt Standort- und Objekt-Anlage (aus aktiver Vorlage), nur für Rolle administration sichtbar (/auth/me liefert Rollen an AuthContext). Bewusst kein Bereich/Kategorie/Material-CRUD - kommt aus Excel-Import. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
This commit is contained in:
@@ -2,6 +2,7 @@ import type { ReactNode } from "react";
|
||||
import { Navigate, Route, Routes } from "react-router-dom";
|
||||
|
||||
import { AuthProvider, useAuth } from "./auth/AuthContext";
|
||||
import { AdminPage } from "./pages/AdminPage";
|
||||
import { KontrollPage } from "./pages/KontrollPage";
|
||||
import { LoginPage } from "./pages/LoginPage";
|
||||
import { ObjektListPage } from "./pages/ObjektListPage";
|
||||
@@ -14,6 +15,17 @@ function GeschuetzteRoute({ children }: { children: ReactNode }) {
|
||||
return <>{children}</>;
|
||||
}
|
||||
|
||||
function AdminRoute({ children }: { children: ReactNode }) {
|
||||
const { eingeloggt, istAdmin } = useAuth();
|
||||
if (!eingeloggt) {
|
||||
return <Navigate to="/login" replace />;
|
||||
}
|
||||
if (!istAdmin) {
|
||||
return <Navigate to="/objekte" replace />;
|
||||
}
|
||||
return <>{children}</>;
|
||||
}
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<AuthProvider>
|
||||
@@ -35,6 +47,14 @@ export default function App() {
|
||||
</GeschuetzteRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/admin"
|
||||
element={
|
||||
<AdminRoute>
|
||||
<AdminPage />
|
||||
</AdminRoute>
|
||||
}
|
||||
/>
|
||||
<Route path="*" element={<Navigate to="/objekte" replace />} />
|
||||
</Routes>
|
||||
</AuthProvider>
|
||||
|
||||
Reference in New Issue
Block a user