From 92110603ee5a9119e82076f3708831b4cec67311 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Mon, 19 Sep 2022 12:44:11 +0200 Subject: [PATCH] refactor(nc-gui): stop duplicating allRoles & check preview permissions separately --- .../composables/useUIPermission/index.ts | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/nc-gui/composables/useUIPermission/index.ts b/packages/nc-gui/composables/useUIPermission/index.ts index e7e593ac03..57e014d1c9 100644 --- a/packages/nc-gui/composables/useUIPermission/index.ts +++ b/packages/nc-gui/composables/useUIPermission/index.ts @@ -29,24 +29,26 @@ export function useUIPermission() { }), ) - const isUIAllowed = (permission: Permission | string, skipPreviewAs = false) => { - let roles = { ...allRoles.value } + const hasPermission = (role: Role | ProjectRole, hasRole: boolean, permission: Permission | string) => { + const rolePermission = rolePermissions[role] + + return ( + hasRole && + rolePermission && + ((isString(rolePermission) && rolePermission === '*') || rolePermission[permission as keyof typeof rolePermission]) + ) + } + const isUIAllowed = (permission: Permission | string, skipPreviewAs = false) => { + let hasPreviewPermission = false if (previewAs.value && !skipPreviewAs) { - roles = { - [previewAs.value]: true, - } + hasPreviewPermission = hasPermission(previewAs.value, true, permission) } - return Object.entries(roles).some(([role, hasRole]) => { - const rolePermission = rolePermissions[role as Role | ProjectRole] - - return ( - hasRole && - rolePermission && - ((isString(rolePermission) && rolePermission === '*') || rolePermission[permission as keyof typeof rolePermission]) - ) - }) + return ( + hasPreviewPermission || + Object.entries(allRoles.value).some(([role, hasRole]) => hasPermission(role as Role | ProjectRole, hasRole, permission)) + ) } return { isUIAllowed }