// frontend/src/App.tsx import React from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { AuthProvider, useAuth } from './contexts/AuthContext'; import Layout from './components/Layout/Layout'; import Login from './pages/Auth/Login'; import Dashboard from './pages/Dashboard/Dashboard'; import ShiftPlanList from './pages/ShiftPlans/ShiftPlanList'; import ShiftPlanCreate from './pages/ShiftPlans/ShiftPlanCreate'; import EmployeeManagement from './pages/Employees/EmployeeManagement'; import Settings from './pages/Settings/Settings'; import Help from './pages/Help/Help'; // Protected Route Component const ProtectedRoute: React.FC<{ children: React.ReactNode; roles?: string[] }> = ({ children, roles = ['admin', 'instandhalter', 'user'] }) => { const { user, loading, hasRole } = useAuth(); if (loading) { return (
⏳ Lade Anwendung...
); } if (!user || !hasRole(roles)) { return ; } return {children}; }; function App() { return ( {/* Public Route */} } /> {/* Protected Routes with Layout */} } /> } /> } /> } /> } /> } /> {/* Legal Pages (ohne Layout für einfacheren Zugang) */} Impressum Seite} /> Datenschutz Seite} /> AGB Seite} /> ); } export default App;