RED-3804: Fixed disappearing disabled entity permissions
This commit is contained in:
parent
cb4969df23
commit
db1095ce3b
@ -8,7 +8,7 @@ export class PermissionsGuard implements CanActivate {
|
||||
constructor(private readonly _entityPermissionsService: EntityPermissionsService) {}
|
||||
|
||||
async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
|
||||
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;
|
||||
|
||||
@ -28,7 +28,10 @@ export class EntityPermissionsService extends GenericService<IPermissionsMapping
|
||||
loadFor(targetObject: string): Observable<PermissionsMapping[]> {
|
||||
return this._http.get<IPermissionsMapping[]>(`/${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<IPermissionsMapping
|
||||
}
|
||||
return this._post(permissions, `${this._defaultModelPath}/${targetObject}`).pipe(switchMap(() => 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user