import { useApp } from '@nocobase/client'; import { Tabs } from 'antd'; import React, { useContext, useEffect, useMemo } from 'react'; import { RolesManagerContext } from '../RolesManagerProvider'; import { useACLTranslation } from '../locale'; import { AvailableActionsProvider } from './AvailableActions'; import { GeneralPermissions } from './GeneralPermissions'; import { MenuItemsProvider } from './MenuItemsProvider'; import { MenuPermissions } from './MenuPermissions'; import { PluginPermissions } from './PluginPermissions'; const TabLayout: React.FC = (props) => { return
{props.children}
; }; export const Permissions: React.FC<{ active: boolean }> = ({ active }) => { const { t } = useACLTranslation(); const [activeKey, setActiveKey] = React.useState('general'); const { role } = useContext(RolesManagerContext); const pm = role?.snippets?.includes('pm.*'); const app = useApp(); const DataSourcePermissionManager = app.getComponent('DataSourcePermissionManager'); const items = useMemo( () => [ { key: 'general', label: t('General'), children: ( ), }, { key: 'menu', label: t('Menu'), children: ( ), }, ...(pm ? [ { key: 'plugin', label: t('Plugin settings'), children: ( ), }, ] : []), ...(DataSourcePermissionManager ? [ { key: 'dataSource', label: t('Data sources'), children: ( ), }, ] : []), ], [pm, activeKey, active, t], ); useEffect(() => { setActiveKey('general'); }, [role?.name]); return ( setActiveKey(key)} items={items} /> ); };