From 39a675c89da002fa2b2ab4442c63ba1dfe44b46d Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 18 Jul 2024 13:43:38 +0530 Subject: [PATCH] cache issue for reduce function --- .../services/permissions-ability.service.ts | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index 41b65a43f4..b87847f725 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -54,6 +54,8 @@ export class AbilityService { if (resources && resources.some((item) => item.resource === TOOLJET_RESOURCE.APP)) { userPermissions[TOOLJET_RESOURCE.APP] = await this.createUserAppsPermissions(appsGranularPermissions, user); } + console.log(userPermissions); + return userPermissions; } @@ -61,24 +63,35 @@ export class AbilityService { appsGranularPermissions: GranularPermissions[], user: User ): Promise { - const userAppsPermissions: UserAppsPermissions = appsGranularPermissions.reduce((acc, permission) => { + const userAppsPermissions: UserAppsPermissions = { ...DEFAULT_USER_APPS_PERMISSIONS }; + + appsGranularPermissions.forEach((permission) => { const appsPermission = permission?.appsGroupPermissions; + const groupApps = appsPermission?.groupApps ? appsPermission.groupApps.map((item) => item.appId) : []; - return { - isAllEditable: acc.isAllEditable || (permission.isAll && appsPermission?.canEdit), - editableAppsId: Array.from(new Set([...acc.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])])), - isAllViewable: acc.isAllViewable || (permission.isAll && appsPermission?.canView), - viewableAppsId: Array.from(new Set([...acc.viewableAppsId, ...(appsPermission?.canView ? groupApps : [])])), - hiddenAppsId: Array.from( - new Set([...acc.hiddenAppsId, ...(appsPermission?.hideFromDashboard ? groupApps : [])]) - ), - hideAll: acc.hideAll || (appsPermission.hideFromDashboard && permission.isAll), - }; - }, DEFAULT_USER_APPS_PERMISSIONS); + + userAppsPermissions.isAllEditable = + userAppsPermissions.isAllEditable || (permission.isAll && appsPermission?.canEdit); + userAppsPermissions.editableAppsId = Array.from( + new Set([...userAppsPermissions.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])]) + ); + userAppsPermissions.isAllViewable = + userAppsPermissions.isAllViewable || (permission.isAll && appsPermission?.canView); + userAppsPermissions.viewableAppsId = Array.from( + new Set([...userAppsPermissions.viewableAppsId, ...(appsPermission?.canView ? groupApps : [])]) + ); + userAppsPermissions.hiddenAppsId = Array.from( + new Set([...userAppsPermissions.hiddenAppsId, ...(appsPermission?.hideFromDashboard ? groupApps : [])]) + ); + userAppsPermissions.hideAll = + userAppsPermissions.hideAll || (appsPermission?.hideFromDashboard && permission.isAll); + }); + await dbTransactionWrap(async (manager: EntityManager) => { const appsOwnedByUser = await manager.find(App, { where: { userId: user.id, organizationId: user.organizationId }, }); + const appsIdOwnedByUser = appsOwnedByUser.map((app) => app.id); userAppsPermissions.editableAppsId = Array.from( new Set([...userAppsPermissions.editableAppsId, ...appsIdOwnedByUser])