import { lazy, Suspense } from 'react'; 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 { Spin, Result, Button } from 'antd'; import type { ReactNode } from 'react'; const InboxPage = lazy(() => import('./pages/InboxPage')); const InboxDetailPage = lazy(() => import('./pages/InboxDetailPage')); const PosteingangPage = lazy(() => import('./pages/PosteingangPage')); const ManuellBearbeitenPage = lazy(() => import('./pages/ManuellBearbeitenPage')); const MailpostfachPage = lazy(() => import('./pages/MailpostfachPage')); const MailDetailPage = lazy(() => import('./pages/MailDetailPage')); const SettingsPage = lazy(() => import('./pages/SettingsPage')); const UserSettingsPage = lazy(() => import('./pages/UserSettingsPage')); const LoginPage = lazy(() => import('./pages/LoginPage')); const DashboardPage = lazy(() => import('./pages/DashboardPage')); 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 ( ); }