sprint9: app visibility — sidebar permission filter + TopBar + ProtectedRoute + route guards
Check Cross-Plugin Imports / check (push) Has been cancelled

This commit is contained in:
Agent Zero
2026-07-29 02:28:52 +02:00
parent 88c04286af
commit 48b2dfdb11
10 changed files with 221 additions and 80 deletions
+22 -21
View File
@@ -2,6 +2,7 @@ import React, { Suspense } from 'react';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { AppShell } from '@/components/layout/AppShell';
import { ProtectedRoute } from './ProtectedRoute';
import { ProtectedRoute as PermissionRoute } from '@/components/common/ProtectedRoute';
import { LoginPage } from '@/pages/Login';
import { PasswordResetRequestPage } from '@/pages/PasswordResetRequest';
import { PasswordResetConfirmPage } from '@/pages/PasswordResetConfirm';
@@ -117,31 +118,31 @@ const router = createBrowserRouter([
children: [
{ path: '/', element: withSuspense(<DashboardPage />) },
{ path: '/dashboard', element: withSuspense(<DashboardPage />) },
{ path: '/contacts', element: withSuspense(<ContactsListPage />) },
{ path: '/contacts/:id', element: withSuspense(<ContactDetailPage />) },
{ path: '/audit-log', element: withSuspense(<AuditLogPage />) },
{ path: '/contacts', element: <PermissionRoute permission="contacts:read">{withSuspense(<ContactsListPage />)}</PermissionRoute> },
{ path: '/contacts/:id', element: <PermissionRoute permission="contacts:read">{withSuspense(<ContactDetailPage />)}</PermissionRoute> },
{ path: '/audit-log', element: <PermissionRoute permission="audit:read">{withSuspense(<AuditLogPage />)}</PermissionRoute> },
{ path: '/search', element: withSuspense(<GlobalSearchResultsPage />) },
{ path: '/calendar', element: withSuspense(<CalendarPage />) },
{ path: '/calendar/kanban', element: withSuspense(<CalendarKanbanPage />) },
{ path: '/dms', element: withSuspense(<DmsPage />) },
{ path: '/dms/trash', element: withSuspense(<DmsTrashPage />) },
{ path: '/mail', element: withSuspense(<MailPage />) },
{ path: '/mail/settings', element: withSuspense(<MailSettingsPage />) },
{ path: '/ai-assistant', element: withSuspense(<AIAssistantPage />) },
{ path: '/automation', element: withSuspense(<AutomationDashboardPage />) },
{ path: '/agents', element: withSuspense(<AgentDashboardPage />) },
{ path: '/reports', element: withSuspense(<ReportsPage />) },
{ path: '/tasks', element: withSuspense(<TasksPage />) },
{ path: '/communication', element: withSuspense(<CommunicationPage />) },
{ path: '/workflows', element: withSuspense(<WorkflowsPage />) },
{ path: '/contacts/dedup', element: withSuspense(<DedupMergePage />) },
{ path: '/import-export', element: withSuspense(<ImportExportPage />) },
{ path: '/tags', element: withSuspense(<TagsPage />) },
{ path: '/activity', element: withSuspense(<ActivityTimelinePage />) },
{ path: '/calendar', element: <PermissionRoute permission="calendar:read">{withSuspense(<CalendarPage />)}</PermissionRoute> },
{ path: '/calendar/kanban', element: <PermissionRoute permission="calendar:read">{withSuspense(<CalendarKanbanPage />)}</PermissionRoute> },
{ path: '/dms', element: <PermissionRoute permission="dms:read">{withSuspense(<DmsPage />)}</PermissionRoute> },
{ path: '/dms/trash', element: <PermissionRoute permission="dms:read">{withSuspense(<DmsTrashPage />)}</PermissionRoute> },
{ path: '/mail', element: <PermissionRoute permission="mail:read">{withSuspense(<MailPage />)}</PermissionRoute> },
{ path: '/mail/settings', element: <PermissionRoute permission="mail:read">{withSuspense(<MailSettingsPage />)}</PermissionRoute> },
{ path: '/ai-assistant', element: <PermissionRoute permission="ai:read">{withSuspense(<AIAssistantPage />)}</PermissionRoute> },
{ path: '/automation', element: <PermissionRoute permission="automation:read">{withSuspense(<AutomationDashboardPage />)}</PermissionRoute> },
{ path: '/agents', element: <PermissionRoute permission="automation:read">{withSuspense(<AgentDashboardPage />)}</PermissionRoute> },
{ path: '/reports', element: <PermissionRoute permission="reports:read">{withSuspense(<ReportsPage />)}</PermissionRoute> },
{ path: '/tasks', element: <PermissionRoute permission="tasks:read">{withSuspense(<TasksPage />)}</PermissionRoute> },
{ path: '/communication', element: <PermissionRoute permission="communication:read">{withSuspense(<CommunicationPage />)}</PermissionRoute> },
{ path: '/workflows', element: <PermissionRoute permission="workflows:read">{withSuspense(<WorkflowsPage />)}</PermissionRoute> },
{ path: '/contacts/dedup', element: <PermissionRoute permission="contacts:read">{withSuspense(<DedupMergePage />)}</PermissionRoute> },
{ path: '/import-export', element: <PermissionRoute permission="contacts:read">{withSuspense(<ImportExportPage />)}</PermissionRoute> },
{ path: '/tags', element: <PermissionRoute permission="tags:read">{withSuspense(<TagsPage />)}</PermissionRoute> },
{ path: '/activity', element: <PermissionRoute permission="activity:read">{withSuspense(<ActivityTimelinePage />)}</PermissionRoute> },
{ path: '/profile', element: withSuspense(<SettingsProfilePage />) },
{
path: '/settings',
element: withSuspense(<SettingsPage />),
element: <PermissionRoute permission="settings:read">{withSuspense(<SettingsPage />)}</PermissionRoute>,
children: [
{ path: 'stammdaten', element: withSuspense(<SettingsStammdatenPage />) },
{ path: 'user-management', element: withSuspense(<SettingsUserManagementPage />) },