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} />
);
};