diff --git a/lib/core/services/user-access.service.spec.ts b/lib/core/services/user-access.service.spec.ts index f955a9abc1..59f82ac46e 100644 --- a/lib/core/services/user-access.service.spec.ts +++ b/lib/core/services/user-access.service.spec.ts @@ -51,6 +51,22 @@ describe('UserAccessService', () => { }); } + it('should return true when no roles to check are passed in global access', async () => { + spyUserAccess(['MOCK_USER_ROLE'], {}); + await userAccessService.fetchUserAccess(); + const hasGlobalAccess = userAccessService.hasGlobalAccess([]); + + expect(hasGlobalAccess).toBe(true); + }); + + it('should return true when no roles to check are passed in application access', async () => { + spyUserAccess([], { mockApp: { roles: ['MOCK_APP_ROLE'] } }); + await userAccessService.fetchUserAccess(); + const hasApplicationAccess = userAccessService.hasApplicationAccess('mockApp', []); + + expect(hasApplicationAccess).toBe(true); + }); + describe('Access from JWT token', () => { it('should return true when the user has one of the global roles', async () => { diff --git a/lib/core/services/user-access.service.ts b/lib/core/services/user-access.service.ts index bd719a01a0..a65403ec40 100644 --- a/lib/core/services/user-access.service.ts +++ b/lib/core/services/user-access.service.ts @@ -84,7 +84,10 @@ export class UserAccessService { * @returns True if it contains at least one of the given roles, false otherwise */ hasGlobalAccess(rolesToCheck: string[]): boolean { - return this.globalAccess ? this.globalAccess.some((role: string) => rolesToCheck.includes(role)) : false; + if (rolesToCheck?.length > 0) { + return this.globalAccess ? this.globalAccess.some((role: string) => rolesToCheck.includes(role)) : false; + } + return true; } /** @@ -95,8 +98,11 @@ export class UserAccessService { * @returns True if it contains at least one of the given roles, false otherwise */ hasApplicationAccess(appName: string, rolesToCheck: string[]): boolean { - const appAccess = this.hasRolesInJwt() ? this.applicationAccess[appName] : this.applicationAccess.find((app: ApplicationAccessModel) => app.name === appName); - return appAccess ? appAccess.roles.some(appRole => rolesToCheck.includes(appRole)) : false; + if (rolesToCheck?.length > 0) { + const appAccess = this.hasRolesInJwt() ? this.applicationAccess[appName] : this.applicationAccess.find((app: ApplicationAccessModel) => app.name === appName); + return appAccess ? appAccess.roles.some(appRole => rolesToCheck.includes(appRole)) : false; + } + return true; } /**