UNPKG

ng-secure-access

Version:

Librairie Angular pour la gestion des permissions d'accès aux routes et l'affichage conditionnel basé sur les permissions utilisateur

44 lines 5.18 kB
import { Directive, Input } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./permission.service"; export class HasPermissionDirective { templateRef; viewContainer; permissionService; permissionsRequired = []; constructor(templateRef, viewContainer, permissionService) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.permissionService = permissionService; } set hasPermission(permissions) { this.permissionsRequired = permissions; this.updateView(); } updateView() { if (this.checkPermissions()) { // Affiche l'élément si au moins une permission est présente this.viewContainer.createEmbeddedView(this.templateRef); } else { // Masque l'élément this.viewContainer.clear(); } } checkPermissions() { // Vérifie si l'utilisateur a au moins une des permissions requises return this.permissionService.hasPermission(this.permissionsRequired); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: HasPermissionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: HasPermissionDirective, isStandalone: true, selector: "[hasPermission]", inputs: { hasPermission: "hasPermission" }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: HasPermissionDirective, decorators: [{ type: Directive, args: [{ selector: '[hasPermission]', standalone: true }] }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.PermissionService }], propDecorators: { hasPermission: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXBlcm1pc3Npb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctc2VjdXJlLWFjY2Vzcy9zcmMvbGliL2hhcy1wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7OztBQU85RSxNQUFNLE9BQU8sc0JBQXNCO0lBSW5CO0lBQ0E7SUFDQTtJQUxKLG1CQUFtQixHQUFhLEVBQUUsQ0FBQztJQUUzQyxZQUNZLFdBQTZCLEVBQzdCLGFBQStCLEVBQy9CLGlCQUFvQztRQUZwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDN0MsQ0FBQztJQUVKLElBQWEsYUFBYSxDQUFDLFdBQXFCO1FBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1lBQzFCLDREQUE0RDtZQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxDQUFDO2FBQU0sQ0FBQztZQUNKLG1CQUFtQjtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLG1FQUFtRTtRQUNuRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDMUUsQ0FBQzt1R0EzQlEsc0JBQXNCOzJGQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ25COytJQVVnQixhQUFhO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gXCIuL3Blcm1pc3Npb24uc2VydmljZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1toYXNQZXJtaXNzaW9uXScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIYXNQZXJtaXNzaW9uRGlyZWN0aXZlIHtcclxuICAgIHByaXZhdGUgcGVybWlzc2lvbnNSZXF1aXJlZDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZVxyXG4gICAgKSB7fVxyXG5cclxuICAgIEBJbnB1dCgpIHNldCBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb25zOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvbnNSZXF1aXJlZCA9IHBlcm1pc3Npb25zO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlldygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlVmlldygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jaGVja1Blcm1pc3Npb25zKCkpIHtcclxuICAgICAgICAgICAgLy8gQWZmaWNoZSBsJ8OpbMOpbWVudCBzaSBhdSBtb2lucyB1bmUgcGVybWlzc2lvbiBlc3QgcHLDqXNlbnRlXHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gTWFzcXVlIGwnw6lsw6ltZW50XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrUGVybWlzc2lvbnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gVsOpcmlmaWUgc2kgbCd1dGlsaXNhdGV1ciBhIGF1IG1vaW5zIHVuZSBkZXMgcGVybWlzc2lvbnMgcmVxdWlzZXNcclxuICAgICAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbnNSZXF1aXJlZCk7XHJcbiAgICB9XHJcbn1cclxuIl19