mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-28 09:03:53 +00:00
fix: allDataset (#3031)
This commit is contained in:
@@ -19,7 +19,7 @@ async function handler(req: NextApiRequest): Promise<DatasetSimpleItemType[]> {
|
|||||||
const {
|
const {
|
||||||
teamId,
|
teamId,
|
||||||
tmbId,
|
tmbId,
|
||||||
permission: tmbPer
|
permission: myPer
|
||||||
} = await authUserPer({
|
} = await authUserPer({
|
||||||
req,
|
req,
|
||||||
authToken: true,
|
authToken: true,
|
||||||
@@ -43,65 +43,55 @@ async function handler(req: NextApiRequest): Promise<DatasetSimpleItemType[]> {
|
|||||||
})
|
})
|
||||||
.lean(),
|
.lean(),
|
||||||
MongoResourcePermission.find({
|
MongoResourcePermission.find({
|
||||||
$and: [
|
resourceType: PerResourceTypeEnum.dataset,
|
||||||
{
|
teamId,
|
||||||
resourceType: PerResourceTypeEnum.dataset,
|
resourceId: {
|
||||||
teamId,
|
$exists: true
|
||||||
resourceId: {
|
}
|
||||||
$exists: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] }
|
|
||||||
]
|
|
||||||
}).lean()
|
}).lean()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const filterDatasets = myDatasets
|
const filterDatasets = myDatasets
|
||||||
.map((dataset) => {
|
.map((dataset) => {
|
||||||
const perVal = (() => {
|
const per = (() => {
|
||||||
|
const myPerList = perList.filter(
|
||||||
|
(item) =>
|
||||||
|
String(item.tmbId) === String(tmbId) || myGroupIds.includes(String(item.groupId))
|
||||||
|
);
|
||||||
|
|
||||||
|
const getPer = (id: string) => {
|
||||||
|
const tmbPer = myPerList.find(
|
||||||
|
(item) => String(item.resourceId) === id && !!item.tmbId
|
||||||
|
)?.permission;
|
||||||
|
const groupPer = getGroupPer(
|
||||||
|
myPerList
|
||||||
|
.filter(
|
||||||
|
(item) =>
|
||||||
|
String(item.resourceId) === id && myGroupIds.includes(String(item.groupId))
|
||||||
|
)
|
||||||
|
.map((item) => item.permission)
|
||||||
|
);
|
||||||
|
|
||||||
|
return new DatasetPermission({
|
||||||
|
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
|
||||||
|
isOwner: String(dataset.tmbId) === String(tmbId) || myPer.isOwner
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const parentDataset = myDatasets.find(
|
const parentDataset = myDatasets.find(
|
||||||
(item) => String(item._id) === String(dataset.parentId)
|
(item) => String(item._id) === String(dataset.parentId)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dataset.inheritPermission && dataset.parentId && parentDataset) {
|
if (dataset.inheritPermission && dataset.parentId && parentDataset) {
|
||||||
const tmbPer = perList.find(
|
return getPer(parentDataset._id);
|
||||||
(item) => String(item.resourceId) === String(parentDataset._id) && !!item.tmbId
|
|
||||||
)?.permission;
|
|
||||||
const groupPer = getGroupPer(
|
|
||||||
perList
|
|
||||||
.filter(
|
|
||||||
(item) =>
|
|
||||||
String(item.resourceId) === String(parentDataset._id) &&
|
|
||||||
myGroupIds.includes(String(item.groupId))
|
|
||||||
)
|
|
||||||
.map((item) => item.permission)
|
|
||||||
);
|
|
||||||
return tmbPer ?? groupPer ?? DatasetDefaultPermissionVal;
|
|
||||||
} else {
|
} else {
|
||||||
const tmbPer = perList.find(
|
return getPer(dataset._id);
|
||||||
(item) => String(item.resourceId) === String(dataset._id) && !!item.tmbId
|
|
||||||
)?.permission;
|
|
||||||
const groupPer = getGroupPer(
|
|
||||||
perList
|
|
||||||
.filter(
|
|
||||||
(item) =>
|
|
||||||
String(item.resourceId) === String(dataset._id) &&
|
|
||||||
myGroupIds.includes(String(item.groupId))
|
|
||||||
)
|
|
||||||
.map((item) => item.permission)
|
|
||||||
);
|
|
||||||
return tmbPer ?? groupPer ?? DatasetDefaultPermissionVal;
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
const Per = new DatasetPermission({
|
|
||||||
per: perVal ?? DatasetDefaultPermissionVal,
|
|
||||||
isOwner: String(dataset.tmbId) === tmbId || tmbPer.isOwner
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...dataset,
|
...dataset,
|
||||||
permission: Per
|
permission: per
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
.filter((app) => app.permission.hasReadPer);
|
.filter((app) => app.permission.hasReadPer);
|
||||||
|
Reference in New Issue
Block a user