mirror of
https://github.com/labring/FastGPT.git
synced 2025-10-13 22:56:28 +00:00

* refactor: permission role * refactor: permission type * fix: permission manage * fix: group owner cannot be deleted * chore: common per map * chore: openapi * chore: rename * fix: type error * chore: app chat log permission * chore: add initv4112
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { getTmbInfoByTmbId } from '../../support/user/team/controller';
|
|
import { getResourcePermission } from '../../support/permission/controller';
|
|
import { PerResourceTypeEnum } from '@fastgpt/global/support/permission/constant';
|
|
import { DatasetPermission } from '@fastgpt/global/support/permission/dataset/controller';
|
|
|
|
// TODO: 需要优化成批量获取权限
|
|
export const filterDatasetsByTmbId = async ({
|
|
datasetIds,
|
|
tmbId
|
|
}: {
|
|
datasetIds: string[];
|
|
tmbId: string;
|
|
}) => {
|
|
const { teamId, permission: tmbPer } = await getTmbInfoByTmbId({ tmbId });
|
|
|
|
// First get all permissions
|
|
const permissions = await Promise.all(
|
|
datasetIds.map(async (datasetId) => {
|
|
const role = await getResourcePermission({
|
|
teamId,
|
|
tmbId,
|
|
resourceId: datasetId,
|
|
resourceType: PerResourceTypeEnum.dataset
|
|
});
|
|
|
|
if (role === undefined) return false;
|
|
|
|
const datasetPer = new DatasetPermission({
|
|
role,
|
|
isOwner: tmbPer.isOwner
|
|
});
|
|
|
|
return datasetPer.hasReadPer;
|
|
})
|
|
);
|
|
|
|
// Then filter datasetIds based on permissions
|
|
return datasetIds.filter((_, index) => permissions[index]);
|
|
};
|