From efc4e860b7c6a631a1bb57e557f1995df16058e9 Mon Sep 17 00:00:00 2001 From: Finley Ge <32237950+FinleyGe@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:22:21 +0800 Subject: [PATCH] fix/group (#3012) * fix: app/dataset list private resource bug * fix: auth owner --- .../service/support/permission/app/auth.ts | 6 +++++ .../support/permission/dataset/auth.ts | 5 ++++ projects/app/src/pages/api/core/app/list.ts | 24 +++++++++---------- .../app/src/pages/api/core/dataset/list.ts | 22 ++++++++--------- 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/packages/service/support/permission/app/auth.ts b/packages/service/support/permission/app/auth.ts index f5fc5e33b..4ef73a854 100644 --- a/packages/service/support/permission/app/auth.ts +++ b/packages/service/support/permission/app/auth.ts @@ -72,6 +72,12 @@ export const authAppByTmbId = async ({ const isOwner = tmbPer.isOwner || String(app.tmbId) === String(tmbId); const { Per } = await (async () => { + if (isOwner) { + return { + Per: new AppPermission({ isOwner: true }) + }; + } + if ( AppFolderTypeList.includes(app.type) || app.inheritPermission === false || diff --git a/packages/service/support/permission/dataset/auth.ts b/packages/service/support/permission/dataset/auth.ts index 7c44b9e46..eeb8d27c1 100644 --- a/packages/service/support/permission/dataset/auth.ts +++ b/packages/service/support/permission/dataset/auth.ts @@ -64,6 +64,11 @@ export const authDatasetByTmbId = async ({ // get dataset permission or inherit permission from parent folder. const { Per } = await (async () => { + if (isOwner) { + return { + Per: new DatasetPermission({ isOwner: true }) + }; + } if ( dataset.type === DatasetTypeEnum.folder || dataset.inheritPermission === false || diff --git a/projects/app/src/pages/api/core/app/list.ts b/projects/app/src/pages/api/core/app/list.ts index aadd0d4c4..f0cdca48a 100644 --- a/projects/app/src/pages/api/core/app/list.ts +++ b/projects/app/src/pages/api/core/app/list.ts @@ -107,16 +107,11 @@ async function handler(req: ApiRequestProps): Promise): Promise String(item.resourceId) === String(app._id)).length <= 1 }; } else { const tmbPer = perList.find( @@ -160,14 +156,16 @@ async function handler(req: ApiRequestProps): Promise String(item.resourceId) === String(app._id)).length <= 1 }; } })(); + return { ...app, permission: Per, - privateApp: privateApp + privateApp }; }) .filter((app) => app.permission.hasReadPer); diff --git a/projects/app/src/pages/api/core/dataset/list.ts b/projects/app/src/pages/api/core/dataset/list.ts index 7560abd23..a231d74f2 100644 --- a/projects/app/src/pages/api/core/dataset/list.ts +++ b/projects/app/src/pages/api/core/dataset/list.ts @@ -92,16 +92,11 @@ async function handler(req: ApiRequestProps) { }) .lean(), MongoResourcePermission.find({ - $and: [ - { - resourceType: PerResourceTypeEnum.dataset, - teamId, - resourceId: { - $exists: true - } - }, - { $or: [{ tmbId }, { groupId: { $in: myGroupIds } }] } - ] + resourceType: PerResourceTypeEnum.dataset, + teamId, + resourceId: { + $exists: true + } }).lean() ]); @@ -127,7 +122,8 @@ async function handler(req: ApiRequestProps) { per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal, isOwner: String(parentDataset.tmbId) === tmbId || myPer.isOwner }), - privateDataset: !tmbPer && !groupPer + privateDataset: + perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1 }; } else { const tmbPer = perList.find( @@ -148,10 +144,12 @@ async function handler(req: ApiRequestProps) { per: tmbPer ?? groupPer ?? DatasetDefaultPermissionVal, isOwner: String(dataset.tmbId) === tmbId || myPer.isOwner }), - privateDataset: !tmbPer && !groupPer + privateDataset: + perList.filter((item) => String(item.resourceId) === String(dataset._id)).length <= 1 }; } })(); + return { ...dataset, permission: Per,