Commit d72929dc by heheer Committed by GitHub

fix dataset auth filter (#5457)

parent 9fbfabac
import { getTmbInfoByTmbId } from '../../support/user/team/controller'; import { authDatasetByTmbId } from '../../support/permission/dataset/auth';
import { getResourcePermission } from '../../support/permission/controller'; import { ReadPermissionVal } from '@fastgpt/global/support/permission/constant';
import { PerResourceTypeEnum } from '@fastgpt/global/support/permission/constant';
import { DatasetPermission } from '@fastgpt/global/support/permission/dataset/controller';
// TODO: 需要优化成批量获取权限 // TODO: 需要优化成批量获取权限
export const filterDatasetsByTmbId = async ({ export const filterDatasetsByTmbId = async ({
...@@ -11,26 +9,19 @@ export const filterDatasetsByTmbId = async ({ ...@@ -11,26 +9,19 @@ export const filterDatasetsByTmbId = async ({
datasetIds: string[]; datasetIds: string[];
tmbId: string; tmbId: string;
}) => { }) => {
const { teamId, permission: tmbPer } = await getTmbInfoByTmbId({ tmbId });
// First get all permissions
const permissions = await Promise.all( const permissions = await Promise.all(
datasetIds.map(async (datasetId) => { datasetIds.map(async (datasetId) => {
const role = await getResourcePermission({ try {
teamId, await authDatasetByTmbId({
tmbId, tmbId,
resourceId: datasetId, datasetId,
resourceType: PerResourceTypeEnum.dataset per: ReadPermissionVal
}); });
return true;
if (role === undefined) return false; } catch (error) {
console.log(`Dataset ${datasetId} access denied:`, error);
const datasetPer = new DatasetPermission({ return false;
role, }
isOwner: tmbPer.isOwner
});
return datasetPer.hasReadPer;
}) })
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment