* fix: app/dataset list private resource bug

* fix: auth owner
This commit is contained in:
Finley Ge
2024-10-29 11:22:21 +08:00
committed by shilin66
parent 6932b2984c
commit 6c37fbc7f1
4 changed files with 32 additions and 25 deletions

View File

@@ -72,6 +72,12 @@ export const authAppByTmbId = async ({
const isOwner = tmbPer.isOwner || String(app.tmbId) === String(tmbId); const isOwner = tmbPer.isOwner || String(app.tmbId) === String(tmbId);
const { Per } = await (async () => { const { Per } = await (async () => {
if (isOwner) {
return {
Per: new AppPermission({ isOwner: true })
};
}
if ( if (
AppFolderTypeList.includes(app.type) || AppFolderTypeList.includes(app.type) ||
app.inheritPermission === false || app.inheritPermission === false ||

View File

@@ -64,6 +64,11 @@ export const authDatasetByTmbId = async ({
// get dataset permission or inherit permission from parent folder. // get dataset permission or inherit permission from parent folder.
const { Per } = await (async () => { const { Per } = await (async () => {
if (isOwner) {
return {
Per: new DatasetPermission({ isOwner: true })
};
}
if ( if (
dataset.type === DatasetTypeEnum.folder || dataset.type === DatasetTypeEnum.folder ||
dataset.inheritPermission === false || dataset.inheritPermission === false ||

View File

@@ -107,16 +107,11 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
.limit(searchKey ? 20 : 1000) .limit(searchKey ? 20 : 1000)
.lean(), .lean(),
MongoResourcePermission.find({ MongoResourcePermission.find({
$and: [
{
resourceType: PerResourceTypeEnum.app, resourceType: PerResourceTypeEnum.app,
teamId, teamId,
resourceId: { resourceId: {
$exists: true $exists: true
} }
},
{ $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] }
]
}).lean() }).lean()
]); ]);
@@ -143,7 +138,8 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal, per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner
}), }),
privateApp: !tmbPer && !groupPer privateApp:
perList.filter((item) => String(item.resourceId) === String(app._id)).length <= 1
}; };
} else { } else {
const tmbPer = perList.find( const tmbPer = perList.find(
@@ -160,14 +156,16 @@ async function handler(req: ApiRequestProps<ListAppBody>): Promise<AppListItemTy
per: tmbPer ?? groupPer ?? AppDefaultPermissionVal, per: tmbPer ?? groupPer ?? AppDefaultPermissionVal,
isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner isOwner: String(app.tmbId) === String(tmbId) || myPer.isOwner
}), }),
privateApp: !tmbPer && !groupPer privateApp:
perList.filter((item) => String(item.resourceId) === String(app._id)).length <= 1
}; };
} }
})(); })();
return { return {
...app, ...app,
permission: Per, permission: Per,
privateApp: privateApp privateApp
}; };
}) })
.filter((app) => app.permission.hasReadPer); .filter((app) => app.permission.hasReadPer);

View File

@@ -92,16 +92,11 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
}) })
.lean(), .lean(),
MongoResourcePermission.find({ MongoResourcePermission.find({
$and: [
{
resourceType: PerResourceTypeEnum.dataset, resourceType: PerResourceTypeEnum.dataset,
teamId, teamId,
resourceId: { resourceId: {
$exists: true $exists: true
} }
},
{ $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] }
]
}).lean() }).lean()
]); ]);
@@ -127,7 +122,8 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal, per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner
}), }),
privateDataset: !tmbPer && !groupPer privateDataset:
perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1
}; };
} else { } else {
const tmbPer = perList.find( const tmbPer = perList.find(
@@ -148,10 +144,12 @@ async function handler(req: ApiRequestProps<GetDatasetListBody>) {
per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal, per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal,
isOwner: String(dataset.tmbId) === tmbId || myPer.isOwner isOwner: String(dataset.tmbId) === tmbId || myPer.isOwner
}), }),
privateDataset: !tmbPer && !groupPer privateDataset:
perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1
}; };
} }
})(); })();
return { return {
...dataset, ...dataset,
permission: Per, permission: Per,