optional permission & roles service
This commit is contained in:
parent
b35ed3f2f2
commit
ee4040d759
@ -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);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user