From db1095ce3b1b4ee731d58df099634b76f9386941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 11 Apr 2022 13:38:10 +0300 Subject: [PATCH] RED-3804: Fixed disappearing disabled entity permissions --- .../src/app/guards/permissions-guard.ts | 2 +- .../entity-permissions.service.ts | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/app/guards/permissions-guard.ts b/apps/red-ui/src/app/guards/permissions-guard.ts index 6e43decd2..58094478f 100644 --- a/apps/red-ui/src/app/guards/permissions-guard.ts +++ b/apps/red-ui/src/app/guards/permissions-guard.ts @@ -8,7 +8,7 @@ export class PermissionsGuard implements CanActivate { constructor(private readonly _entityPermissionsService: EntityPermissionsService) {} async canActivate(route: ActivatedRouteSnapshot): Promise { - const targetObject = route.data.permissionsObject; + const targetObject: string = route.data.permissionsObject; await firstValueFrom(this._entityPermissionsService.loadConfigFor(targetObject)); await firstValueFrom(this._entityPermissionsService.loadFor(targetObject)); return true; diff --git a/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts b/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts index 1881672f6..a4fc8d08d 100644 --- a/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts +++ b/apps/red-ui/src/app/services/entity-permissions/entity-permissions.service.ts @@ -28,7 +28,10 @@ export class EntityPermissionsService extends GenericService { return this._http.get(`/${this._defaultModelPath}/${targetObject}`).pipe( mapEach(mapping => new PermissionsMapping(mapping, targetObject)), - tap(mappings => this._permissionsMapService.set(targetObject, mappings)), + tap(mappings => { + this.#addMissingPermissions(mappings, targetObject); + this._permissionsMapService.set(targetObject, mappings); + }), ); } @@ -46,4 +49,21 @@ export class EntityPermissionsService extends GenericService this.loadFor(targetObject))); } + + #addMissingPermissions(mappings: PermissionsMapping[], targetObject: string): void { + const configuration = this._permissionsConfigurationMapService.get(targetObject); + for (const mapping of configuration) { + const targetPermission: string = mapping.targetPermission.name; + if (!mappings.some(p => p.targetPermission.name === targetPermission)) { + const missingConfig: PermissionsMapping = new PermissionsMapping( + { + mappedPermissions: [], + targetPermission: mapping.targetPermission, + }, + targetObject, + ); + mappings.push(missingConfig); + } + } + } }