diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermisionProvider.tsx b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermisionProvider.tsx index 34036e1664..e70808df86 100644 --- a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermisionProvider.tsx +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermisionProvider.tsx @@ -59,12 +59,16 @@ export const PermissionProvider = (props) => { ); }; +export const CurrentDataSourceKey = createContext({ dataSourceKey: 'main' }); + export const RoleRecordProvider = (props) => { const role = useContext(CurrentRolesContext); const record = useRecord(); return ( - {props.children} + + {props.children} + ); }; diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermissionResourceActionProvider.tsx b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermissionResourceActionProvider.tsx new file mode 100644 index 0000000000..829d767575 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/PermissionResourceActionProvider.tsx @@ -0,0 +1,36 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +import React, { useContext } from 'react'; +import { ResourceActionProvider, useRecord } from '@nocobase/client'; +import { CurrentDataSourceKey } from './PermisionProvider'; + +export const PermissionResourceActionProvider = (props) => { + const { dataSourceKey } = useContext(CurrentDataSourceKey); + const record = useRecord(); + console.log(props, record.key, dataSourceKey); + + // 创建一个新的请求对象,并添加 dataSourceKey + const modifiedRequest = { + ...props.request, + params: { + ...props.request.params, + filter: { + ...props.request.params.filter, + dataSourceKey, // 添加 dataSourceKey 到 filter + }, + }, + }; + + return ( + + {props.children} + + ); +}; diff --git a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/roleCollections.ts b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/roleCollections.ts index 875450bc43..c8ea11957a 100644 --- a/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/roleCollections.ts +++ b/packages/plugins/@nocobase/plugin-data-source-manager/src/client/component/PermissionManager/schemas/roleCollections.ts @@ -11,7 +11,7 @@ import { ISchema } from '@formily/react'; import { uid } from '@formily/shared'; import { useRoleResourceValues } from './useRoleResourceValues'; import { useSaveRoleResourceAction } from './useSaveRoleResourceAction'; - +import { PermissionResourceActionProvider } from '../PermissionResourceActionProvider'; const collection = { name: 'dataSourcesCollections', targetKey: 'name', @@ -82,9 +82,9 @@ export const roleCollectionsSchema: ISchema = { type: 'void', 'x-decorator': 'RoleRecordProvider', properties: { - block: { + [uid()]: { type: 'void', - 'x-decorator': 'ResourceActionProvider', + 'x-decorator': PermissionResourceActionProvider, 'x-decorator-props': { collection, association: {