import type { ReactNode } from 'react'; import { lazy } from 'react'; import { appLayout } from '../lib/appLayout'; import { hasAllPermission } from '../lib/authorization'; import { onToggledFeature } from '../lib/onToggledFeature'; import { router } from '../providers/RouterProvider'; import SettingsProvider from '../providers/SettingsProvider'; import NotAuthorizedPage from '../views/notAuthorized/NotAuthorizedPage'; import MainLayout from '../views/root/MainLayout'; const AuditPage = lazy(() => import('../views/audit/AuditPage')); const AuditLogPage = lazy(() => import('../views/audit/AuditLogPage')); const SecurityLogsPage = lazy(() => import('../views/audit/SecurityLogsPage')); declare module '@rocket.chat/ui-contexts' { interface IRouterPaths { 'audit-home': { pathname: '/audit'; pattern: '/audit/:tab?'; }; 'audit-log': { pathname: '/audit-log'; pattern: '/audit-log'; }; 'security-logs': { pathname: '/security-logs'; pattern: '/security-logs'; }; } } export type PermissionGuardProps = { children: ReactNode; permission: string }; const PermissionGuard = ({ children, permission }: PermissionGuardProps) => { const canView = hasAllPermission(permission); return <>{canView ? children : }; }; let unregisterAuditRoutes: () => void; onToggledFeature('auditing', { up: () => { unregisterAuditRoutes = router.defineRoutes([ { path: '/audit/:tab?', id: 'audit-home', element: appLayout.wrap( , ), }, { path: '/audit-log', id: 'audit-log', element: appLayout.wrap( , ), }, { path: '/security-logs', id: 'security-logs', element: appLayout.wrap( , ), }, ]); }, down: () => { unregisterAuditRoutes(); }, });