diff --git a/packages/nc-gui-v2/composables/useUIPermission/index.ts b/packages/nc-gui-v2/composables/useUIPermission/index.ts index f2bdd4d8a6..5fd667e3dc 100644 --- a/packages/nc-gui-v2/composables/useUIPermission/index.ts +++ b/packages/nc-gui-v2/composables/useUIPermission/index.ts @@ -1,4 +1,4 @@ -import type { RolePermissions } from './rolePermissions' +import type { Permission } from './rolePermissions' import rolePermissions from './rolePermissions' import { useState } from '#app' import { USER_PROJECT_ROLES } from '~/lib/constants' @@ -7,7 +7,7 @@ export function useUIPermission() { const { $state } = useNuxtApp() const projectRoles = useState>(USER_PROJECT_ROLES, () => ({})) - const isUIAllowed = (permission: RolePermissions, _skipPreviewAs = false) => { + const isUIAllowed = (permission: Permission, _skipPreviewAs = false) => { const user = $state.user let userRoles = user?.value?.roles || {} @@ -32,15 +32,10 @@ export function useUIPermission() { // }; // } - return Object.entries(roles).some(([role, hasRole]) => { - const rolePermission = rolePermissions[role as keyof typeof rolePermissions] + return Object.entries(roles).some(([role, hasRole]) => { + const rolePermission = rolePermissions[role as keyof typeof rolePermissions] as '*' | Record - return ( - hasRole && - (rolePermission === '*' || typeof rolePermission === 'object' - ? rolePermission[permission as keyof typeof rolePermission] === true - : false) - ) + return hasRole && (rolePermission === '*' || rolePermission[permission]) }) } diff --git a/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts b/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts index e48f32c8ea..9fff66f69b 100644 --- a/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts +++ b/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts @@ -40,9 +40,10 @@ export default rolePermissions type GetKeys = T extends Record ? keyof T : never -export type RolePermissions = - | T[K] extends string +export type Permission = K extends + | 'creator' + | 'owner' ? T[K] - : never & T[K] extends Record + : never | T[K] extends Record ? GetKeys : never