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,