mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-07 14:39:25 +08:00
feat: support data source permission tabs extension (#5268)
* feat: support data source permission tabs extension * Update index.tsx
This commit is contained in:
parent
8bbf6bc65b
commit
d1bbede789
@ -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 (
|
||||
<div>
|
||||
<SchemaComponentContext.Provider value={{ designable: false }}>
|
||||
<AvailableActionsProver>
|
||||
<SchemaComponent
|
||||
schema={dataSourceSchema}
|
||||
schema={dataSourceSchema(plugin.getExtendedTabs())}
|
||||
components={{ SettingCenterPermissionProvider, PermissionProvider }}
|
||||
scope={{ dataSourceKey: record.key }}
|
||||
/>
|
||||
|
@ -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 = {
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
@ -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 }) => ({
|
||||
|
Loading…
x
Reference in New Issue
Block a user