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 }) => ({