import { BrowserRouter, Routes, Route, Navigate, useNavigate, useLocation } from 'react-router-dom'; import { ConfigProvider, theme, App as AntdApp } from 'antd'; import deDE from 'antd/locale/de_DE'; import { AuthProvider, useAuth } from './auth/AuthContext'; import { saveReturnUrl } from './auth/sessionRedirect'; import { ThemeProvider, useTheme } from './theme/ThemeContext'; import AuthCallback from './auth/AuthCallback'; import AppLayout from './layouts/AppLayout'; import InboxPage from './pages/InboxPage'; import InboxDetailPage from './pages/InboxDetailPage'; import PosteingangPage from './pages/PosteingangPage'; import ManuellBearbeitenPage from './pages/ManuellBearbeitenPage'; import MailpostfachPage from './pages/MailpostfachPage'; import MailDetailPage from './pages/MailDetailPage'; import SettingsPage from './pages/SettingsPage'; import LoginPage from './pages/LoginPage'; import DashboardPage from './pages/DashboardPage'; import { Spin, Result, Button } from 'antd'; import type { ReactNode } from 'react'; import { Permission } from './auth/permissions'; function UnauthorizedPage() { const navigate = useNavigate(); return ( navigate('/')}>Zurück zur Startseite} /> ); } function ProtectedRoute({ children }: { children: ReactNode }) { const { isAuthenticated, isLoading } = useAuth(); const location = useLocation(); if (isLoading) { return (
); } if (!isAuthenticated) { saveReturnUrl(location.pathname + location.search); return ; } return <>{children}; } function PermissionRoute({ permission, children }: { permission: Permission; children: ReactNode }) { const { hasPermission } = useAuth(); if (!hasPermission(permission)) { return ; } return <>{children}; } function ThemedApp() { const { isDark } = useTheme(); return ( } /> } /> } > } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } export default function App() { return ( ); }