From ee4040d759c80cc4252190df0d6a2ea973d33120 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Wed, 26 Oct 2022 12:46:59 +0300 Subject: [PATCH] optional permission & roles service --- src/lib/users/services/iqser-user.service.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/users/services/iqser-user.service.ts b/src/lib/users/services/iqser-user.service.ts index 7891f94..78048e3 100644 --- a/src/lib/users/services/iqser-user.service.ts +++ b/src/lib/users/services/iqser-user.service.ts @@ -1,4 +1,4 @@ -import { inject, Injectable } from '@angular/core'; +import { inject, Injectable, InjectFlags } from '@angular/core'; import { KeycloakService } from 'keycloak-angular'; import { BehaviorSubject, firstValueFrom, Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; @@ -34,8 +34,8 @@ export abstract class IqserUserService< protected readonly _baseHref = inject(BASE_HREF); protected readonly _keycloakService = inject(KeycloakService); protected readonly _cacheApiService = inject(CacheApiService); - protected readonly _permissionsService = inject(IqserPermissionsService); - protected readonly _rolesService = inject(IqserRolesService); + protected readonly _permissionsService = inject(IqserPermissionsService, InjectFlags.Optional); + protected readonly _rolesService = inject(IqserRolesService, InjectFlags.Optional); constructor() { super(); @@ -85,11 +85,11 @@ export abstract class IqserUserService< const token = await this._keycloakService.getToken(); const decoded: IToken = jwt_decode(token); const userId = decoded.sub; - const rolesField = this._keycloakService.getKeycloakInstance().realm || ''; - this._permissionsService.load(decoded.resource_access[rolesField].roles); + const realm = this._keycloakService.getKeycloakInstance().realm || ''; + this._permissionsService?.load(decoded.resource_access[realm].roles); const roles = this._keycloakService.getUserRoles(true).filter(role => this._rolesFilter(role)); - this._rolesService.load(roles); + this._rolesService?.load(roles); const user = new this._entityClass(profile, roles, userId); this.replace(user);