Commit 6939899b by Finley Ge Committed by GitHub

fix: allDataset (#3031)

parent 732b6d77
...@@ -19,7 +19,7 @@ async function handler(req: NextApiRequest): Promise<DatasetSimpleItemType[]> { ...@@ -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[]> { ...@@ -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 parentDataset = myDatasets.find( const myPerList = perList.filter(
(item) => String(item._id) === String(dataset.parentId) (item) =>
String(item.tmbId) === String(tmbId) || myGroupIds.includes(String(item.groupId))
); );
if (dataset.inheritPermission && dataset.parentId && parentDataset) { const getPer = (id: string) => {
const tmbPer = perList.find( const tmbPer = myPerList.find(
(item) => String(item.resourceId) === String(parentDataset._id) && !!item.tmbId (item) => String(item.resourceId) === id && !!item.tmbId
)?.permission; )?.permission;
const groupPer = getGroupPer( const groupPer = getGroupPer(
perList myPerList
.filter( .filter(
(item) => (item) =>
String(item.resourceId) === String(parentDataset._id) && String(item.resourceId) === id && myGroupIds.includes(String(item.groupId))
myGroupIds.includes(String(item.groupId))
) )
.map((item) => item.permission) .map((item) => item.permission)
); );
return tmbPer ?? groupPer ?? DatasetDefaultPermissionVal;
return new DatasetPermission({
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
isOwner: String(dataset.tmbId) === String(tmbId) || myPer.isOwner
});
};
const parentDataset = myDatasets.find(
(item) => String(item._id) === String(dataset.parentId)
);
if (dataset.inheritPermission && dataset.parentId && parentDataset) {
return getPer(parentDataset._id);
} 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);
......
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