import { Box, Button, ButtonGroup, Callout } from '@rocket.chat/fuselage'; import { useStableCallback } from '@rocket.chat/fuselage-hooks'; import { ContextualbarDialog, Page, PageContent, PageHeader } from '@rocket.chat/ui-client'; import { useSetting, useRouteParameter, useRouter } from '@rocket.chat/ui-contexts'; import { Trans, useTranslation } from 'react-i18next'; import AttributesContextualBar from './ABACAttributesTab/AttributesContextualBar'; import AttributesContextualBarWithData from './ABACAttributesTab/AttributesContextualBarWithData'; import AttributesPage from './ABACAttributesTab/AttributesPage'; import LogsPage from './ABACLogsTab/LogsPage'; import RoomsContextualBar from './ABACRoomsTab/RoomsContextualBar'; import RoomsContextualBarWithData from './ABACRoomsTab/RoomsContextualBarWithData'; import RoomsPage from './ABACRoomsTab/RoomsPage'; import SettingsPage from './ABACSettingTab/SettingsPage'; import AdminABACTabs from './AdminABACTabs'; import { useABACTabPermissions } from './hooks/useABACTabPermissions'; import { useIsABACAvailable } from './hooks/useIsABACAvailable'; import { useExternalLink } from '../../../hooks/useExternalLink'; import { useLdapSync } from '../../../hooks/useLdapSync'; import { links } from '../../../lib/links'; export type AdminABACPageProps = { shouldShowWarning: boolean; }; const AdminABACPage = ({ shouldShowWarning }: AdminABACPageProps) => { const { t } = useTranslation(); const router = useRouter(); const tab = useRouteParameter('tab'); const _id = useRouteParameter('id'); const context = useRouteParameter('context'); const learnMore = useExternalLink(); const isABACAvailable = useIsABACAvailable(); const ldapEnabled = useSetting('LDAP_Enable'); const abacEnabled = useSetting('ABAC_Enabled'); const handleSyncNow = useLdapSync(); const isSyncDisabled = !ldapEnabled || !abacEnabled; const tabPermissions = useABACTabPermissions(); const handleCloseContextualbar = useStableCallback((): void => { if (!context) { return; } router.navigate( { name: 'admin-ABAC', params: { ...router.getRouteParameters(), context: '', id: '' }, }, { replace: true }, ); }); return ( {shouldShowWarning && ( ABAC capabilities without restriction. ), }} /> )} {tab === 'settings' && tabPermissions.settings && } {tab === 'room-attributes' && tabPermissions['room-attributes'] && } {tab === 'rooms' && tabPermissions.rooms && } {tab === 'logs' && tabPermissions.logs && } {isABACAvailable === true && tab !== undefined && context !== undefined && ( handleCloseContextualbar()}> {tab === 'room-attributes' && tabPermissions['room-attributes'] && ( <> {context === 'new' && handleCloseContextualbar()} />} {context === 'edit' && _id && handleCloseContextualbar()} />} )} {tab === 'rooms' && tabPermissions.rooms && ( <> {context === 'new' && handleCloseContextualbar()} />} {context === 'edit' && _id && handleCloseContextualbar()} />} )} )} ); }; export default AdminABACPage;