Browse Source

feat(gui): show app store only for super admin user

Signed-off-by: Pranav C <pranavxc@gmail.com>
pull/3796/head
Pranav C 2 years ago
parent
commit
ace5f0a06d
  1. 6
      packages/nc-gui/components/dashboard/settings/Modal.vue
  2. 9
      packages/nc-gui/composables/useUIPermission/index.ts
  3. 16
      packages/nc-gui/composables/useUIPermission/rolePermissions.ts

6
packages/nc-gui/components/dashboard/settings/Modal.vue

@ -76,7 +76,8 @@ const tabsInfo: TabGroup = {
onClick: () => { onClick: () => {
$e('c:settings:team-auth') $e('c:settings:team-auth')
}, },
}, }, ...(isUIAllowed('appStore')
? {
appStore: { appStore: {
// App Store // App Store
title: t('title.appStore'), title: t('title.appStore'),
@ -90,7 +91,8 @@ const tabsInfo: TabGroup = {
onClick: () => { onClick: () => {
$e('c:settings:appstore') $e('c:settings:appstore')
}, },
}, }
: {}),
projMetaData: { projMetaData: {
// Project Metadata // Project Metadata
title: t('title.projMeta'), title: t('title.projMeta'),

9
packages/nc-gui/composables/useUIPermission/index.ts

@ -11,6 +11,15 @@ const hasPermission = (role: Role | ProjectRole, hasRole: boolean, permission: P
if (isString(rolePermission) && rolePermission === '*') return true if (isString(rolePermission) && rolePermission === '*') return true
// todo: type correction
if('include' in rolePermission[permission as keyof typeof rolePermission]){
return rolePermission[permission as keyof typeof rolePermission].include[permission]
}
if('exclude' in rolePermission[permission as keyof typeof rolePermission]){
return !rolePermission[permission as keyof typeof rolePermission].exclude[permission]
}
return rolePermission[permission as keyof typeof rolePermission] return rolePermission[permission as keyof typeof rolePermission]
} }

16
packages/nc-gui/composables/useUIPermission/rolePermissions.ts

@ -8,15 +8,22 @@ const rolePermissions = {
[Role.Admin]: {}, [Role.Admin]: {},
[Role.Guest]: {}, [Role.Guest]: {},
[Role.User]: { [Role.User]: {
include: {
projectCreate: true, projectCreate: true,
projectActions: true, projectActions: true,
projectSettings: true, projectSettings: true,
}
}, },
// Project role permissions // Project role permissions
[ProjectRole.Creator]: '*', [ProjectRole.Creator]: {
[ProjectRole.Owner]: '*', exclude: ["appStore"]
},
[ProjectRole.Owner]: {
exclude: ["appStore"]
},
[ProjectRole.Editor]: { [ProjectRole.Editor]: {
include: {
smartSheet: true, smartSheet: true,
xcDatatableEditable: true, xcDatatableEditable: true,
column: true, column: true,
@ -33,18 +40,23 @@ const rolePermissions = {
apiDocs: true, apiDocs: true,
projectSettings: true, projectSettings: true,
newUser: false, newUser: false,
}
}, },
[ProjectRole.Commenter]: { [ProjectRole.Commenter]: {
include: {
smartSheet: true, smartSheet: true,
column: true, column: true,
rowComments: true, rowComments: true,
projectSettings: true, projectSettings: true,
}, },
},
[ProjectRole.Viewer]: { [ProjectRole.Viewer]: {
include: {
smartSheet: true, smartSheet: true,
column: true, column: true,
projectSettings: true, projectSettings: true,
}, },
},
} as const } as const
type RolePermissions = Omit<typeof rolePermissions, 'creator' | 'owner' | 'guest' | 'admin'> type RolePermissions = Omit<typeof rolePermissions, 'creator' | 'owner' | 'guest' | 'admin'>

Loading…
Cancel
Save