mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-07 22:49:26 +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.
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Spin } from 'antd';
|
|
||||||
import React, { createContext, useContext } from 'react';
|
|
||||||
import {
|
import {
|
||||||
useRequest,
|
|
||||||
SchemaComponent,
|
SchemaComponent,
|
||||||
SchemaComponentContext,
|
SchemaComponentContext,
|
||||||
SettingCenterPermissionProvider,
|
SettingCenterPermissionProvider,
|
||||||
|
usePlugin,
|
||||||
useRecord,
|
useRecord,
|
||||||
|
useRequest,
|
||||||
} from '@nocobase/client';
|
} 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 { PermissionProvider } from './PermisionProvider';
|
||||||
|
import { dataSourceSchema } from './schemas/dataSourceTable';
|
||||||
|
|
||||||
const AvailableActionsContext = createContext([]);
|
const AvailableActionsContext = createContext([]);
|
||||||
AvailableActionsContext.displayName = 'AvailableActionsContext';
|
AvailableActionsContext.displayName = 'AvailableActionsContext';
|
||||||
@ -41,12 +43,13 @@ export const useAvailableActions = () => {
|
|||||||
|
|
||||||
export const DataSourceTable = () => {
|
export const DataSourceTable = () => {
|
||||||
const record = useRecord();
|
const record = useRecord();
|
||||||
|
const plugin = usePlugin(PluginDataSourceManagerClient);
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<SchemaComponentContext.Provider value={{ designable: false }}>
|
<SchemaComponentContext.Provider value={{ designable: false }}>
|
||||||
<AvailableActionsProver>
|
<AvailableActionsProver>
|
||||||
<SchemaComponent
|
<SchemaComponent
|
||||||
schema={dataSourceSchema}
|
schema={dataSourceSchema(plugin.getExtendedTabs())}
|
||||||
components={{ SettingCenterPermissionProvider, PermissionProvider }}
|
components={{ SettingCenterPermissionProvider, PermissionProvider }}
|
||||||
scope={{ dataSourceKey: record.key }}
|
scope={{ dataSourceKey: record.key }}
|
||||||
/>
|
/>
|
||||||
|
@ -40,7 +40,7 @@ const collection = {
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const dataSourceSchema: ISchema = {
|
export const dataSourceSchema = (tabs = {}): ISchema => ({
|
||||||
type: 'object',
|
type: 'object',
|
||||||
properties: {
|
properties: {
|
||||||
block1: {
|
block1: {
|
||||||
@ -161,6 +161,7 @@ export const dataSourceSchema: ISchema = {
|
|||||||
roleCollectionsSchema,
|
roleCollectionsSchema,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
...tabs,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -176,4 +177,4 @@ export const dataSourceSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
});
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
import { Plugin } from '@nocobase/client';
|
import { Plugin } from '@nocobase/client';
|
||||||
import PluginACLClient from '@nocobase/plugin-acl/client';
|
import PluginACLClient from '@nocobase/plugin-acl/client';
|
||||||
|
import { uid } from '@nocobase/utils/client';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { DatabaseConnectionProvider } from './DatabaseConnectionProvider';
|
import { DatabaseConnectionProvider } from './DatabaseConnectionProvider';
|
||||||
import { ThirdDataSource } from './ThridDataSource';
|
import { ThirdDataSource } from './ThridDataSource';
|
||||||
@ -21,6 +22,17 @@ import { NAMESPACE } from './locale';
|
|||||||
|
|
||||||
export class PluginDataSourceManagerClient extends Plugin {
|
export class PluginDataSourceManagerClient extends Plugin {
|
||||||
types = new Map();
|
types = new Map();
|
||||||
|
|
||||||
|
extendedTabs = {};
|
||||||
|
|
||||||
|
getExtendedTabs() {
|
||||||
|
return this.extendedTabs;
|
||||||
|
}
|
||||||
|
|
||||||
|
registerPermissionTab(schema) {
|
||||||
|
this.extendedTabs[uid()] = schema;
|
||||||
|
}
|
||||||
|
|
||||||
async load() {
|
async load() {
|
||||||
// register a configuration item in the Users & Permissions management page
|
// register a configuration item in the Users & Permissions management page
|
||||||
this.app.pm.get(PluginACLClient).settingsUI.addPermissionsTab(({ t, TabLayout, role }) => ({
|
this.app.pm.get(PluginACLClient).settingsUI.addPermissionsTab(({ t, TabLayout, role }) => ({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user