import { useState } from 'react' import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom' import { AuthProvider, useAuth } from './contexts/AuthContext' import { PermissionsProvider, usePermissions } from './contexts/PermissionsContext' import Sidebar from './components/Sidebar' import Footer from './components/Footer' import Home from './pages/Home' import Spaces from './pages/Spaces' import SpaceDetail from './pages/SpaceDetail' import Impressum from './pages/Impressum' import Profile from './pages/Profile' import Users from './pages/Users' import Permissions from './pages/Permissions' import Login from './pages/Login' import AuditLogs from './pages/AuditLogs' // Protected Route Component const ProtectedRoute = ({ children }) => { const { isAuthenticated, loading } = useAuth() if (loading) { return (

Lade...

) } return isAuthenticated ? children : } // Admin Only Route Component const AdminRoute = ({ children }) => { const { isAuthenticated, loading } = useAuth() const { isAdmin, loading: permissionsLoading } = usePermissions() if (loading || permissionsLoading) { return (

Lade...

) } if (!isAuthenticated) { return } if (!isAdmin) { return (

Zugriff verweigert

Nur Administratoren haben Zugriff auf diese Seite.

) } return children } // Public Route Component (redirects to home if already logged in) const PublicRoute = ({ children }) => { const { isAuthenticated, loading } = useAuth() if (loading) { return (

Lade...

) } return !isAuthenticated ? children : } const AppContent = () => { const [sidebarOpen, setSidebarOpen] = useState(true) return (
} /> } /> } /> } /> } /> } /> } /> } /> } />
) } function App() { return ( ) } export default App