diff --git a/src-ui/src/app/services/permissions.service.spec.ts b/src-ui/src/app/services/permissions.service.spec.ts index 1beb0204a..86c878545 100644 --- a/src-ui/src/app/services/permissions.service.spec.ts +++ b/src-ui/src/app/services/permissions.service.spec.ts @@ -108,6 +108,18 @@ describe('PermissionsService', () => { actionKey: 'View', // PermissionAction.View typeKey: 'Document', // PermissionType.Document }) + expect( + permissionsService.getPermissionKeys('view_global_statistics') + ).toEqual({ + actionKey: 'View', // PermissionAction.View + typeKey: 'GlobalStatistics', // PermissionType.GlobalStatistics + }) + expect( + permissionsService.getPermissionKeys('view_system_monitoring') + ).toEqual({ + actionKey: 'View', // PermissionAction.View + typeKey: 'SystemMonitoring', // PermissionType.SystemMonitoring + }) }) it('correctly checks explicit global permissions', () => { diff --git a/src-ui/src/app/services/permissions.service.ts b/src-ui/src/app/services/permissions.service.ts index 1d319fac7..198df0a35 100644 --- a/src-ui/src/app/services/permissions.service.ts +++ b/src-ui/src/app/services/permissions.service.ts @@ -110,19 +110,16 @@ export class PermissionsService { actionKey: string typeKey: string } { - const matches = permissionStr.match(/(.+)_/) let typeKey let actionKey - if (matches?.length > 0) { - const action = matches[1] - const actionIndex = Object.values(PermissionAction).indexOf( - action as PermissionAction - ) - if (actionIndex > -1) { - actionKey = Object.keys(PermissionAction)[actionIndex] - } + const actionIndex = Object.values(PermissionAction).findIndex((action) => + permissionStr.startsWith(`${action}_`) + ) + if (actionIndex > -1) { + const action = Object.values(PermissionAction)[actionIndex] + actionKey = Object.keys(PermissionAction)[actionIndex] const typeIndex = Object.values(PermissionType).indexOf( - permissionStr.replace(action, '%s') as PermissionType + permissionStr.replace(`${action}_`, '%s_') as PermissionType ) if (typeIndex > -1) { typeKey = Object.keys(PermissionType)[typeIndex]