diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/DataSourceTable.tsx b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/DataSourceTable.tsx index e9d5969a97..6b080f8412 100644 --- a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/DataSourceTable.tsx +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/DataSourceTable.tsx @@ -7,17 +7,19 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import { Spin } from 'antd'; -import React, { createContext, useContext } from 'react'; import { - useRequest, SchemaComponent, SchemaComponentContext, SettingCenterPermissionProvider, + usePlugin, useRecord, + useRequest, } from '@nocobase/client'; -import { dataSourceSchema } from './schemas/dataSourceTable'; +import { Spin } from 'antd'; +import React, { createContext, useContext } from 'react'; +import PluginDataSourceManagerClient from '../..'; import { PermissionProvider } from './PermisionProvider'; +import { dataSourceSchema } from './schemas/dataSourceTable'; const AvailableActionsContext = createContext([]); AvailableActionsContext.displayName = 'AvailableActionsContext'; @@ -41,12 +43,13 @@ export const useAvailableActions = () => { export const DataSourceTable = () => { const record = useRecord(); + const plugin = usePlugin(PluginDataSourceManagerClient); return (
diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/dataSourceTable.ts b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/dataSourceTable.ts index ab5576da06..e6ce164077 100644 --- a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/dataSourceTable.ts +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/dataSourceTable.ts @@ -40,7 +40,7 @@ const collection = { ], }; -export const dataSourceSchema: ISchema = { +export const dataSourceSchema = (tabs = {}): ISchema => ({ type: 'object', properties: { block1: { @@ -161,6 +161,7 @@ export const dataSourceSchema: ISchema = { roleCollectionsSchema, }, }, + ...tabs, }, }, }, @@ -176,4 +177,4 @@ export const dataSourceSchema: ISchema = { }, }, }, -}; +}); diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/index.tsx b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/index.tsx index 473ffb8c17..770f4b582c 100644 --- a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/index.tsx @@ -9,6 +9,7 @@ import { Plugin } from '@nocobase/client'; import PluginACLClient from '@nocobase/plugin-acl/client'; +import { uid } from '@nocobase/utils/client'; import React from 'react'; import { DatabaseConnectionProvider } from './DatabaseConnectionProvider'; import { ThirdDataSource } from './ThridDataSource'; @@ -21,6 +22,17 @@ import { NAMESPACE } from './locale'; export class PluginDataSourceManagerClient extends Plugin { types = new Map(); + + extendedTabs = {}; + + getExtendedTabs() { + return this.extendedTabs; + } + + registerPermissionTab(schema) { + this.extendedTabs[uid()] = schema; + } + async load() { // register a configuration item in the Users & Permissions management page this.app.pm.get(PluginACLClient).settingsUI.addPermissionsTab(({ t, TabLayout, role }) => ({