@igo2/context
Version:
109 lines • 16.4 kB
JavaScript
import { ChangeDetectorRef, Directive, HostListener, Self } from '@angular/core';
import { LanguageService } from '@igo2/core/language';
import { MessageService } from '@igo2/core/message';
import { ContextService } from '../shared/context.service';
import { ContextPermissionsComponent } from './context-permissions.component';
import * as i0 from "@angular/core";
import * as i1 from "./context-permissions.component";
import * as i2 from "../shared/context.service";
import * as i3 from "@igo2/core/language";
import * as i4 from "@igo2/core/message";
export class ContextPermissionsBindingDirective {
contextService;
languageService;
messageService;
cd;
component;
editedContext$$;
onAddPermission(permission) {
if (!permission.profil) {
this.messageService.error('igo.context.contextManager.errors.addPermissionEmpty', 'igo.context.contextManager.errors.addPermissionTitle');
return;
}
const contextId = this.component.context.id;
this.contextService
.addPermissionAssociation(contextId, permission.profil, permission.typePermission)
.subscribe((profils) => {
for (const p of profils) {
this.component.permissions[permission.typePermission].push(p);
}
const profil = permission.profil;
this.messageService.success('igo.context.permission.dialog.addMsg', 'igo.context.permission.dialog.addTitle', undefined, { value: profil });
this.cd.detectChanges();
});
}
onRemovePermission(permission) {
const contextId = this.component.context.id;
this.contextService
.deletePermissionAssociation(contextId, permission.id)
.subscribe(() => {
const index = this.component.permissions[permission.typePermission].findIndex((p) => {
return p.id === permission.id;
});
this.component.permissions[permission.typePermission].splice(index, 1);
const profil = permission.profil;
this.messageService.success('igo.context.permission.dialog.deleteMsg', 'igo.context.permission.dialog.deleteTitle', undefined, { value: profil });
this.cd.detectChanges();
});
}
onScopeChanged(context) {
const scope = context.scope;
this.contextService.update(context.id, { scope }).subscribe(() => {
this.messageService.success('igo.context.permission.dialog.scopeChangedMsg', 'igo.context.permission.dialog.scopeChangedTitle', undefined, { value: 'igo.context.permission.scope.' + scope });
});
}
constructor(component, contextService, languageService, messageService, cd) {
this.contextService = contextService;
this.languageService = languageService;
this.messageService = messageService;
this.cd = cd;
this.component = component;
}
ngOnInit() {
this.editedContext$$ = this.contextService.editedContext$.subscribe((context) => this.handleEditedContextChange(context));
}
ngOnDestroy() {
this.editedContext$$.unsubscribe();
this.contextService.editedContext$.next(undefined);
}
handleEditedContextChange(context) {
this.component.context = context;
if (context) {
this.contextService
.getPermissions(context.id)
.subscribe((permissionsArray) => {
permissionsArray = permissionsArray || [];
const permissions = {
read: permissionsArray.filter((p) => {
return p.typePermission.toString() === 'read';
}),
write: permissionsArray.filter((p) => {
return p.typePermission.toString() === 'write';
})
};
return (this.component.permissions = permissions);
});
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextPermissionsBindingDirective, deps: [{ token: i1.ContextPermissionsComponent, self: true }, { token: i2.ContextService }, { token: i3.LanguageService }, { token: i4.MessageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ContextPermissionsBindingDirective, isStandalone: true, selector: "[igoContextPermissionsBinding]", host: { listeners: { "addPermission": "onAddPermission($event)", "removePermission": "onRemovePermission($event)", "scopeChanged": "onScopeChanged($event)" } }, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextPermissionsBindingDirective, decorators: [{
type: Directive,
args: [{
selector: '[igoContextPermissionsBinding]',
standalone: true
}]
}], ctorParameters: () => [{ type: i1.ContextPermissionsComponent, decorators: [{
type: Self
}] }, { type: i2.ContextService }, { type: i3.LanguageService }, { type: i4.MessageService }, { type: i0.ChangeDetectorRef }], propDecorators: { onAddPermission: [{
type: HostListener,
args: ['addPermission', ['$event']]
}], onRemovePermission: [{
type: HostListener,
args: ['removePermission', ['$event']]
}], onScopeChanged: [{
type: HostListener,
args: ['scopeChanged', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wZXJtaXNzaW9ucy1iaW5kaW5nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1wZXJtaXNzaW9ucy9jb250ZXh0LXBlcm1pc3Npb25zLWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFHWixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQU05RSxNQUFNLE9BQU8sa0NBQWtDO0lBMEVuQztJQUNBO0lBQ0E7SUFDQTtJQTVFRixTQUFTLENBQThCO0lBQ3ZDLGVBQWUsQ0FBZTtJQUd0QyxlQUFlLENBQUMsVUFBNkI7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsc0RBQXNELEVBQ3RELHNEQUFzRCxDQUN2RCxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWM7YUFDaEIsd0JBQXdCLENBQ3ZCLFNBQVMsRUFDVCxVQUFVLENBQUMsTUFBTSxFQUNqQixVQUFVLENBQUMsY0FBYyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxF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QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlCNUMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQ29udGV4dCxcbiAgQ29udGV4dFBlcm1pc3Npb24sXG4gIERldGFpbGVkQ29udGV4dFxufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRQZXJtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1wZXJtaXNzaW9ucy5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaWdvQ29udGV4dFBlcm1pc3Npb25zQmluZGluZ10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRQZXJtaXNzaW9uc0JpbmRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY29tcG9uZW50OiBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQ7XG4gIHByaXZhdGUgZWRpdGVkQ29udGV4dCQkOiBTdWJzY3JpcHRpb247XG5cbiAgQEhvc3RMaXN0ZW5lcignYWRkUGVybWlzc2lvbicsIFsnJGV2ZW50J10pXG4gIG9uQWRkUGVybWlzc2lvbihwZXJtaXNzaW9uOiBDb250ZXh0UGVybWlzc2lvbikge1xuICAgIGlmICghcGVybWlzc2lvbi5wcm9maWwpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvbkVtcHR5JyxcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmVycm9ycy5hZGRQZXJtaXNzaW9uVGl0bGUnXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLmNvbXBvbmVudC5jb250ZXh0LmlkO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgIC5hZGRQZXJtaXNzaW9uQXNzb2NpYXRpb24oXG4gICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgcGVybWlzc2lvbi5wcm9maWwsXG4gICAgICAgIHBlcm1pc3Npb24udHlwZVBlcm1pc3Npb25cbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHByb2ZpbHMpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHByb2ZpbHMpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLnR5cGVQZXJtaXNzaW9uXS5wdXNoKHApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb2ZpbCA9IHBlcm1pc3Npb24ucHJvZmlsO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLmFkZE1zZycsXG4gICAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLmFkZFRpdGxlJyxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgeyB2YWx1ZTogcHJvZmlsIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3JlbW92ZVBlcm1pc3Npb24nLCBbJyRldmVudCddKVxuICBvblJlbW92ZVBlcm1pc3Npb24ocGVybWlzc2lvbjogQ29udGV4dFBlcm1pc3Npb24pIHtcbiAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLmNvbXBvbmVudC5jb250ZXh0LmlkO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgIC5kZWxldGVQZXJtaXNzaW9uQXNzb2NpYXRpb24oY29udGV4dElkLCBwZXJtaXNzaW9uLmlkKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnNbXG4gICAgICAgICAgcGVybWlzc2lvbi50eXBlUGVybWlzc2lvblxuICAgICAgICBdLmZpbmRJbmRleCgocCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwLmlkID09PSBwZXJtaXNzaW9uLmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnNbcGVybWlzc2lvbi50eXBlUGVybWlzc2lvbl0uc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBjb25zdCBwcm9maWwgPSBwZXJtaXNzaW9uLnByb2ZpbDtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5kZWxldGVNc2cnLFxuICAgICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5kZWxldGVUaXRsZScsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHsgdmFsdWU6IHByb2ZpbCB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzY29wZUNoYW5nZWQnLCBbJyRldmVudCddKVxuICBvblNjb3BlQ2hhbmdlZChjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgY29uc3Qgc2NvcGUgPSBjb250ZXh0LnNjb3BlO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKGNvbnRleHQuaWQsIHsgc2NvcGUgfSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLnNjb3BlQ2hhbmdlZE1zZycsXG4gICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5zY29wZUNoYW5nZWRUaXRsZScsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgeyB2YWx1ZTogJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uc2NvcGUuJyArIHNjb3BlIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIGNvbXBvbmVudDogQ29udGV4dFBlcm1pc3Npb25zQ29tcG9uZW50LFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVkaXRlZENvbnRleHQkJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZWRpdGVkQ29udGV4dCQuc3Vic2NyaWJlKFxuICAgICAgKGNvbnRleHQpID0+IHRoaXMuaGFuZGxlRWRpdGVkQ29udGV4dENoYW5nZShjb250ZXh0KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmVkaXRlZENvbnRleHQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZWRpdGVkQ29udGV4dCQubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFZGl0ZWRDb250ZXh0Q2hhbmdlKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIHRoaXMuY29tcG9uZW50LmNvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgICAgLmdldFBlcm1pc3Npb25zKGNvbnRleHQuaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoKHBlcm1pc3Npb25zQXJyYXkpID0+IHtcbiAgICAgICAgICBwZXJtaXNzaW9uc0FycmF5ID0gcGVybWlzc2lvbnNBcnJheSB8fCBbXTtcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHtcbiAgICAgICAgICAgIHJlYWQ6IHBlcm1pc3Npb25zQXJyYXkuZmlsdGVyKChwKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwLnR5cGVQZXJtaXNzaW9uLnRvU3RyaW5nKCkgPT09ICdyZWFkJztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd3JpdGU6IHBlcm1pc3Npb25zQXJyYXkuZmlsdGVyKChwKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwLnR5cGVQZXJtaXNzaW9uLnRvU3RyaW5nKCkgPT09ICd3cml0ZSc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=