@esfaenza/access-control 13.3.2 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -109,9 +109,9 @@ export class AccessControlRouteGuard {
109
109
  onRedirectInProgress() {
110
110
  }
111
111
  }
112
- AccessControlRouteGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard, deps: [{ token: i1.MessageService }, { token: i2.AccessControlService }, { token: i3.Router }, { token: ACC_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
113
- AccessControlRouteGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard, decorators: [{
112
+ AccessControlRouteGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard, deps: [{ token: i1.MessageService }, { token: i2.AccessControlService }, { token: i3.Router }, { token: ACC_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
113
+ AccessControlRouteGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard, decorators: [{
115
115
  type: Injectable
116
116
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.AccessControlService }, { type: i3.Router }, { type: undefined, decorators: [{
117
117
  type: Optional
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
119
119
  type: Inject,
120
120
  args: [ACC_LOCALE]
121
121
  }] }]; } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzQ29udHJvbFJvdXRlR3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvbGliL0FjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxNQUFNO0FBQ04sT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHOUQsUUFBUTtBQUNSLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBR3RDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQXdCaEM7O09BRUc7SUFDSCxZQUFvQixVQUEyQixFQUFVLEVBQXdCLEVBQVUsTUFBYyxFQUFrQyxNQUFjO1FBQXJJLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckJ6Rzs7OztXQUlHO1FBQ08sZUFBVSxHQUFZLE9BQU8sQ0FBQztRQUV4Qzs7O1dBR0c7UUFDTyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFFNUM7O1dBRUc7UUFDTyxXQUFNLEdBQTBDLEVBQUUsQ0FBQztRQU16RCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksbUJBQW1CLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQTZCLEVBQUUsQ0FBc0I7UUFDbEUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsSUFBSSxD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QkE0QnFHLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vQW5ndWxhclxyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZUNoaWxkLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy9MaWJzXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuXHJcbi8vTW9kZWxzXHJcbmltcG9ydCB7IEFDQ19MT0NBTEUgfSBmcm9tIFwiLi90b2tlbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFJvdXRlciBHdWFyZCBiYXNlIHBlciBwcm90ZWdnZXJlIGwnYWNjZXNzbyBhbGxlIHJvdXRlIGRlbGwnYXBwbGljYXppb25lLiBQZXIgdXRpbGl6emFybGEgw6ggc3VmZmljaWVudGUgZXJlZGl0YXJsYSBlLCBuZWwgY29zdHJ1dHRvcmUgZGVsbGEgY2xhc3NlXHJcbiAqIGNoZSBsYSBlcmVkaXRhdmFsb3JpenphcmUgbGEgdmFyaWFiaWxlIFJvdXRlcyBjb24gbGUgcm91dGUgcGVybWVzc2UgZGFsIG1vZHVsbyBlIGlsIHBlcm1lc3NvIHBlciBjdWkgc2kgdnVvbGUgcmlzZXJ2YXJlIGwnYWNjZXNzby4gQWQgZXNlbXBpbzpcclxuICogXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogQEluamVjdGFibGUoKVxyXG4gKiBleHBvcnQgY2xhc3MgSGFzQXV0aEd1YXJkQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJvdXRlckd1YXJkIHtcclxuICogICAgICBjb25zdHJ1Y3RvcihhY2M6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCByb3V0ZXI6IFJvdXRlciwgbXM6IE1lc3NhZ2VTZXJ2aWNlLCB0czogQmFzZVRva2VuU2VydmljZSkge1xyXG4gKiAgICAgICAgICBzdXBlcihtcywgYWNjLCByb3V0ZXIsIHRzKTtcclxuICogICAgICAgICAgdGhpcy5Sb3V0ZXMgPSBbXHJcbiAqICAgICAgICAgICAgICB7IHJvdXRlOiBcInBhZ2Vfcm91dGVcIiwgcGVybWlzc2lvbjogXCJQOnBlcm1fb25lXCIgfSxcclxuICogICAgICAgICAgICAgIHsgcm91dGU6IFwiKlwiLCBwZXJtaXNzaW9uOiBcIlI6cm9sZV9vbmVcIiB9XHJcbiAqICAgICAgICAgIF1cclxuICogICAgICB9XHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sUm91dGVHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlQ2hpbGQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbGM6IExvY2FsaXphdGlvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSb3V0ZSBkaSBsb2dpbiBjaGUgc2VydmUgcGVyIHJlaW5kaXJpenphcmUgYWxsYSBwYWdpbmEgZGkgbG9naW4gaW4gY2FzbyBkaSBmYWxsaW1lbnRvIGRlbCBjb250cm9sbG8gc3VpIFBlcm1lc3NpXHJcbiAgICAgKiBcclxuICAgICAqIEBkZWZhdWx0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBMb2dpblJvdXRlIDogc3RyaW5nID0gXCJsb2dpblwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgZGVsbGUgUm91dGUgc2VtcHJlIGNvbnNlbnRpdGUsIGFuY2hlIGEgbGl2ZWxsbyBkaSBcIlJhZGljZVwiLiBBZCBlc2VtcGlvIGxhIFJvb3QgXCJ0ZXN0XCIgcGVybWV0dGVyw6BcclxuICAgICAqIGwnYWNjZXNzbyBhIHR1dHRlIGxlIHJvdXRlIGNoZSBhbmNoZSBzb2xvIGluaXppYW5vIHBlciBcInRlc3RcIlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgQWx3YXlzQWxsb3dlZFJvb3RzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRpIFJvdXRlIGNvbiBsYSBsb3JvIGVzcHJlc3Npb25lIGRpIGNvbnRyb2xsbyBwZXIgdmFsdXRhcmUgaSBwZXJtZXNzaVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgUm91dGVzOiB7IHJvdXRlOiBhbnk7IHBlcm1pc3Npb246IHN0cmluZzsgfVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZSA6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgQE9wdGlvbmFsKCkgQEluamVjdChBQ0NfTE9DQUxFKSBMT0NBTEU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubGMgPSBuZXcgTG9jYWxpemF0aW9uU2VydmljZShMT0NBTEUgPz8gJ2l0LUlUJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIF86IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB2YXIgdXJsID0gcm91dGUudXJsLmpvaW4oJy8nKTtcclxuICAgICAgICAvL1NlIGwnYXBwbGljYXppb25lIG5vbiDDqCBwcm9udGEgZSBub24gc3RvIG5hdmlnYW5kbyBuZWxsZSBwYWdpbmUgY29uc2VudGl0ZVxyXG4gICAgICAgIGlmICghdGhpcy5hYy5Jbml0aWFsaXplZCAmJiAhdGhpcy5BbHdheXNBbGxvd2VkUm9vdHMuZmluZChyID0+IHVybC5pbmRleE9mKHIpICE9IC0xKSlcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHZhciByb3V0ZU1hdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuUm91dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5Sb3V0ZXNbaV07XHJcbiAgICAgICAgICAgIC8vU2UgZmFjY2lvIG1hdGNoIGNvbiBsYSByb3V0ZSBzaWduaWZpY2EgY2hlIGhvIG5hdmlnYXRvIGluIHVuYSBkZWxsZSByb3V0ZSBjb25vc2NpdXRlLCBhbHRyaW1lbnRpIGF2dmVydG8gbWEgbGFzY2lvIGFuZGFyZVxyXG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2Yoci5yb3V0ZSkgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVNYXRjaCh1cmwsIHIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vU2Ugbm9uIGZhY2NpbyBuZXNzdW4gbWF0Y2ggbWEgaG8gdW5hIHJvdXRlIHdpbGRjYXJkICgqKSBwcmVuZG8gcXVlbGxhIGUgY29udHJvbGxvIHN1IHF1ZWxsYVxyXG4gICAgICAgIGlmICghcm91dGVNYXRjaGVkKSB7XHJcbiAgICAgICAgICAgIHZhciB3aWxkY2FyZFJvdXRlID0gdGhpcy5Sb3V0ZXMuZmluZChyID0+IHIucm91dGUgPT0gXCIqXCIpO1xyXG4gICAgICAgICAgICBpZiAod2lsZGNhcmRSb3V0ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZU1hdGNoKHVybCwgd2lsZGNhcmRSb3V0ZSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmF2aWdhaXpvbmUgYXZ2ZW51dGEgc3Ugcm91dGUgc2Nvbm9zY2l1dGE6IFwiICsgdXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBoYW5kbGVNYXRjaChmcm9tdXJsOiBzdHJpbmcsIHI6IGFueSkge1xyXG4gICAgICAgIGxldCBpZGVudGl0eSA9IHRoaXMuYWMuSWRlbnRpdHk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjLmhhcyhyLnBlcm1pc3Npb24pIHx8XHJcbiAgICAgICAgICAgIChcclxuICAgICAgICAgICAgICAgIC8vIENvbnNpZGVybyBhbmNoZSBsYSBwb3NzaWJpbGl0w6AgZGkgYXZlcmUgbCdhY2Nlc3MgY29udHJvbCBpbml6aWFsaXp6YXRvIG1hIGNoZSBsJ2FjY291bnQgc2NvcGUgbm9uIHNpYSBhbmNvcmEgcHJlc2VudGVcclxuICAgICAgICAgICAgICAgIC8vIGluIHF1ZXN0byBjYXNvIHN1cHBvbmdvIHNpYSB1biBoYXJkIHJlZnJlc2ggZSBtaSBmaWRvIGRlbCBmYXR0byBjaGUgbCd1dGVudGUgcG9zc2EgZW50cmFyY2lcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IEZpeGFyZSBtZWdsaW8gY29uY2F0ZW5hbmRvIHVuYSBwcm9taXNlIGNoZSB2YSBhIHByZW5kZXJlIGwnYWNjb3VudCBzY29wZSBzZSBzZXJ2ZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hYy5Jbml0aWFsaXplZCAmJlxyXG4gICAgICAgICAgICAgICAgKCFpZGVudGl0eS5Sb2xlcyB8fCBpZGVudGl0eS5Sb2xlcy5sZW5ndGggPT0gMCkgJiZcclxuICAgICAgICAgICAgICAgICghaWRlbnRpdHkuUGVybWlzc2lvbnMgfHwgaWRlbnRpdHkuUGVybWlzc2lvbnMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vU2Ugc29ubyBuZWwgc2l0byBvcmlnaW5hbGUgKG5vbiBobyBhcGVydG8gdW4gbmV3dGFiKSBibG9jY28gbGEgbmF2aWdhemlvbmVcclxuICAgICAgICAgICAgLy9TZSBobyBhcGVydG8gdW5hIG51b3ZhIHRhYiBpbnZlY2UgcmlzcGVkaXNjbyBhbCBsb2dpblxyXG4gICAgICAgICAgICBpZiAod2luZG93Lmhpc3RvcnkubGVuZ3RoID4gMiAmJiB0aGlzLmFjLmlzTG9nZ2VkSW4oKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKHRoaXMubGMubG9jKFwiWW91IGRvbid0IGhhdmUgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHZpZXcgdGhpcyBwYWdlLiBUaGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBibG9ja2VkXCIpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJlZGlyZWN0SW5Qcm9ncmVzcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuTG9naW5Sb3V0ZSwgeyBmcm9tVXJsOiBmcm9tdXJsIH1dKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGNoZSB2aWVuZSBlc2VndWl0byBwcmltYSBjaGUgbGEgR3VhcmQgcmVpbmRpcml6emkgYWwgbG9naW5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uUmVkaXJlY3RJblByb2dyZXNzKCkge1xyXG4gICAgfVxyXG59Il19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzQ29udHJvbFJvdXRlR3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvbGliL0FjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxNQUFNO0FBQ04sT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHOUQsUUFBUTtBQUNSLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBR3RDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQXdCaEM7O09BRUc7SUFDSCxZQUFvQixVQUEyQixFQUFVLEVBQXdCLEVBQVUsTUFBYyxFQUFrQyxNQUFjO1FBQXJJLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckJ6Rzs7OztXQUlHO1FBQ08sZUFBVSxHQUFZLE9BQU8sQ0FBQztRQUV4Qzs7O1dBR0c7UUFDTyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFFNUM7O1dBRUc7UUFDTyxXQUFNLEdBQTBDLEVBQUUsQ0FBQztRQU16RCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksbUJBQW1CLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQTZCLEVBQUUsQ0FBc0I7UUFDbEUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsSUFBSSxD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QkE0QnFHLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vQW5ndWxhclxyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZUNoaWxkLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy9MaWJzXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuXHJcbi8vTW9kZWxzXHJcbmltcG9ydCB7IEFDQ19MT0NBTEUgfSBmcm9tIFwiLi90b2tlbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFJvdXRlciBHdWFyZCBiYXNlIHBlciBwcm90ZWdnZXJlIGwnYWNjZXNzbyBhbGxlIHJvdXRlIGRlbGwnYXBwbGljYXppb25lLiBQZXIgdXRpbGl6emFybGEgw6ggc3VmZmljaWVudGUgZXJlZGl0YXJsYSBlLCBuZWwgY29zdHJ1dHRvcmUgZGVsbGEgY2xhc3NlXHJcbiAqIGNoZSBsYSBlcmVkaXRhdmFsb3JpenphcmUgbGEgdmFyaWFiaWxlIFJvdXRlcyBjb24gbGUgcm91dGUgcGVybWVzc2UgZGFsIG1vZHVsbyBlIGlsIHBlcm1lc3NvIHBlciBjdWkgc2kgdnVvbGUgcmlzZXJ2YXJlIGwnYWNjZXNzby4gQWQgZXNlbXBpbzpcclxuICogXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogQEluamVjdGFibGUoKVxyXG4gKiBleHBvcnQgY2xhc3MgSGFzQXV0aEd1YXJkQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJvdXRlckd1YXJkIHtcclxuICogICAgICBjb25zdHJ1Y3RvcihhY2M6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCByb3V0ZXI6IFJvdXRlciwgbXM6IE1lc3NhZ2VTZXJ2aWNlLCB0czogQmFzZVRva2VuU2VydmljZSkge1xyXG4gKiAgICAgICAgICBzdXBlcihtcywgYWNjLCByb3V0ZXIsIHRzKTtcclxuICogICAgICAgICAgdGhpcy5Sb3V0ZXMgPSBbXHJcbiAqICAgICAgICAgICAgICB7IHJvdXRlOiBcInBhZ2Vfcm91dGVcIiwgcGVybWlzc2lvbjogXCJQOnBlcm1fb25lXCIgfSxcclxuICogICAgICAgICAgICAgIHsgcm91dGU6IFwiKlwiLCBwZXJtaXNzaW9uOiBcIlI6cm9sZV9vbmVcIiB9XHJcbiAqICAgICAgICAgIF1cclxuICogICAgICB9XHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sUm91dGVHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlQ2hpbGQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbGM6IExvY2FsaXphdGlvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSb3V0ZSBkaSBsb2dpbiBjaGUgc2VydmUgcGVyIHJlaW5kaXJpenphcmUgYWxsYSBwYWdpbmEgZGkgbG9naW4gaW4gY2FzbyBkaSBmYWxsaW1lbnRvIGRlbCBjb250cm9sbG8gc3VpIFBlcm1lc3NpXHJcbiAgICAgKiBcclxuICAgICAqIEBkZWZhdWx0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBMb2dpblJvdXRlIDogc3RyaW5nID0gXCJsb2dpblwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgZGVsbGUgUm91dGUgc2VtcHJlIGNvbnNlbnRpdGUsIGFuY2hlIGEgbGl2ZWxsbyBkaSBcIlJhZGljZVwiLiBBZCBlc2VtcGlvIGxhIFJvb3QgXCJ0ZXN0XCIgcGVybWV0dGVyw6BcclxuICAgICAqIGwnYWNjZXNzbyBhIHR1dHRlIGxlIHJvdXRlIGNoZSBhbmNoZSBzb2xvIGluaXppYW5vIHBlciBcInRlc3RcIlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgQWx3YXlzQWxsb3dlZFJvb3RzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRpIFJvdXRlIGNvbiBsYSBsb3JvIGVzcHJlc3Npb25lIGRpIGNvbnRyb2xsbyBwZXIgdmFsdXRhcmUgaSBwZXJtZXNzaVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgUm91dGVzOiB7IHJvdXRlOiBhbnk7IHBlcm1pc3Npb246IHN0cmluZzsgfVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZSA6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgQE9wdGlvbmFsKCkgQEluamVjdChBQ0NfTE9DQUxFKSBMT0NBTEU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubGMgPSBuZXcgTG9jYWxpemF0aW9uU2VydmljZShMT0NBTEUgPz8gJ2l0LUlUJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIF86IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB2YXIgdXJsID0gcm91dGUudXJsLmpvaW4oJy8nKTtcclxuICAgICAgICAvL1NlIGwnYXBwbGljYXppb25lIG5vbiDDqCBwcm9udGEgZSBub24gc3RvIG5hdmlnYW5kbyBuZWxsZSBwYWdpbmUgY29uc2VudGl0ZVxyXG4gICAgICAgIGlmICghdGhpcy5hYy5Jbml0aWFsaXplZCAmJiAhdGhpcy5BbHdheXNBbGxvd2VkUm9vdHMuZmluZChyID0+IHVybC5pbmRleE9mKHIpICE9IC0xKSlcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHZhciByb3V0ZU1hdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuUm91dGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5Sb3V0ZXNbaV07XHJcbiAgICAgICAgICAgIC8vU2UgZmFjY2lvIG1hdGNoIGNvbiBsYSByb3V0ZSBzaWduaWZpY2EgY2hlIGhvIG5hdmlnYXRvIGluIHVuYSBkZWxsZSByb3V0ZSBjb25vc2NpdXRlLCBhbHRyaW1lbnRpIGF2dmVydG8gbWEgbGFzY2lvIGFuZGFyZVxyXG4gICAgICAgICAgICBpZiAodXJsLmluZGV4T2Yoci5yb3V0ZSkgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJvdXRlTWF0Y2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVNYXRjaCh1cmwsIHIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vU2Ugbm9uIGZhY2NpbyBuZXNzdW4gbWF0Y2ggbWEgaG8gdW5hIHJvdXRlIHdpbGRjYXJkICgqKSBwcmVuZG8gcXVlbGxhIGUgY29udHJvbGxvIHN1IHF1ZWxsYVxyXG4gICAgICAgIGlmICghcm91dGVNYXRjaGVkKSB7XHJcbiAgICAgICAgICAgIHZhciB3aWxkY2FyZFJvdXRlID0gdGhpcy5Sb3V0ZXMuZmluZChyID0+IHIucm91dGUgPT0gXCIqXCIpO1xyXG4gICAgICAgICAgICBpZiAod2lsZGNhcmRSb3V0ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZU1hdGNoKHVybCwgd2lsZGNhcmRSb3V0ZSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmF2aWdhaXpvbmUgYXZ2ZW51dGEgc3Ugcm91dGUgc2Nvbm9zY2l1dGE6IFwiICsgdXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBoYW5kbGVNYXRjaChmcm9tdXJsOiBzdHJpbmcsIHI6IGFueSkge1xyXG4gICAgICAgIGxldCBpZGVudGl0eSA9IHRoaXMuYWMuSWRlbnRpdHk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjLmhhcyhyLnBlcm1pc3Npb24pIHx8XHJcbiAgICAgICAgICAgIChcclxuICAgICAgICAgICAgICAgIC8vIENvbnNpZGVybyBhbmNoZSBsYSBwb3NzaWJpbGl0w6AgZGkgYXZlcmUgbCdhY2Nlc3MgY29udHJvbCBpbml6aWFsaXp6YXRvIG1hIGNoZSBsJ2FjY291bnQgc2NvcGUgbm9uIHNpYSBhbmNvcmEgcHJlc2VudGVcclxuICAgICAgICAgICAgICAgIC8vIGluIHF1ZXN0byBjYXNvIHN1cHBvbmdvIHNpYSB1biBoYXJkIHJlZnJlc2ggZSBtaSBmaWRvIGRlbCBmYXR0byBjaGUgbCd1dGVudGUgcG9zc2EgZW50cmFyY2lcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IEZpeGFyZSBtZWdsaW8gY29uY2F0ZW5hbmRvIHVuYSBwcm9taXNlIGNoZSB2YSBhIHByZW5kZXJlIGwnYWNjb3VudCBzY29wZSBzZSBzZXJ2ZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hYy5Jbml0aWFsaXplZCAmJlxyXG4gICAgICAgICAgICAgICAgKCFpZGVudGl0eS5Sb2xlcyB8fCBpZGVudGl0eS5Sb2xlcy5sZW5ndGggPT0gMCkgJiZcclxuICAgICAgICAgICAgICAgICghaWRlbnRpdHkuUGVybWlzc2lvbnMgfHwgaWRlbnRpdHkuUGVybWlzc2lvbnMubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vU2Ugc29ubyBuZWwgc2l0byBvcmlnaW5hbGUgKG5vbiBobyBhcGVydG8gdW4gbmV3dGFiKSBibG9jY28gbGEgbmF2aWdhemlvbmVcclxuICAgICAgICAgICAgLy9TZSBobyBhcGVydG8gdW5hIG51b3ZhIHRhYiBpbnZlY2UgcmlzcGVkaXNjbyBhbCBsb2dpblxyXG4gICAgICAgICAgICBpZiAod2luZG93Lmhpc3RvcnkubGVuZ3RoID4gMiAmJiB0aGlzLmFjLmlzTG9nZ2VkSW4oKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKHRoaXMubGMubG9jKFwiWW91IGRvbid0IGhhdmUgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHZpZXcgdGhpcyBwYWdlLiBUaGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBibG9ja2VkXCIpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJlZGlyZWN0SW5Qcm9ncmVzcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuTG9naW5Sb3V0ZSwgeyBmcm9tVXJsOiBmcm9tdXJsIH1dKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGNoZSB2aWVuZSBlc2VndWl0byBwcmltYSBjaGUgbGEgR3VhcmQgcmVpbmRpcml6emkgYWwgbG9naW5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uUmVkaXJlY3RJblByb2dyZXNzKCkge1xyXG4gICAgfVxyXG59Il19
@@ -34,9 +34,9 @@ export class AccessControlDirective {
34
34
  this.viewContainer.clear();
35
35
  }
36
36
  }
37
- AccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
38
- AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac" }, ngImport: i0 });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlDirective, decorators: [{
37
+ AccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
38
+ AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac" }, ngImport: i0 });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlDirective, decorators: [{
40
40
  type: Directive,
41
41
  args: [{
42
42
  selector: '[ac]',
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
44
44
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.AccessControlService }]; }, propDecorators: { ac: [{
45
45
  type: Input
46
46
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBS2hGOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBRS9COzs7O09BSUc7SUFDSCxZQUFvQixXQUE2QixFQUFVLGFBQStCLEVBQVUsR0FBeUI7UUFBekcsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBc0I7SUFBSSxDQUFDO0lBRWxJOzs7Ozs7T0FNRztJQUNILElBQWEsRUFBRSxDQUFDLFVBQWtCO1FBQzlCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJDLHFGQUFxRjtRQUVyRixJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7WUFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzttSEF2QlEsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsTUFBTTtpQkFDbkI7b0tBaUJnQixFQUFFO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSBcIi4vYWNjZXNzLWNvbnRyb2wuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIERpcmV0dGl2YSBjaGUgcGVybWV0dGUgZGkgZ2VzdGlyZSBpbCBjb250cm9sbG8gYWNjZXNzaSBzdSBjb21wb25lbnRpIEhUTUwuIFxyXG4gKiBcclxuICogUGVyIGdsaSBlc2VtcGkgZGkgdXRpbGl6em8gZmFyZSByaWZlcmltZW50byBhbCBSRUFETUUuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2FjXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sRGlyZWN0aXZlIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZSBcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgX2FjOiBBY2Nlc3NDb250cm9sU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnB1dCBhdXRvcmVmZXJlbnppYWxlIHBlciBsYSBkaXJldHRpdmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gIGVzcHJlc3Npb25lIGRhIHByb2Nlc3NhcmUgc2NyaXR0YSBjb21lIHtDaGlhdmV9OntWYWxvcmV9XHJcbiAgICAgKiBcclxuICAgICAqIExlIHtDaGlhdmV9IGRpc3BvbmliaWxpIHNvbm8gZGkgZGVmYXVsdCBcIlJcIiBwZXIgaSBydW9saSBlIFwiUFwiIHBlciBpIHBlcm1lc3NpLiDDiCBwb3NzaWJpbGUgZXNwYW5kZXJsZSBjb24gbGUgQ3VzdG9tIFBlcm1pc3Npb25zXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNldCBhYyhleHByZXNzaW9uOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgYWxsb3cgPSB0aGlzLl9hYy5oYXMoZXhwcmVzc2lvbik7XHJcblxyXG4gICAgICAgIC8vU2UgaG8gaSBwZXJtZXNzaSwgcHJvc2VndW8gY3JlYW5kbyBsYSB2aXN0YSBuZWwgRE9NLCBhbHRyaW1lbnRpIHJpbXVvdm8gaWwgdGVtcGxhdGVcclxuXHJcbiAgICAgICAgaWYgKGFsbG93KSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgICAgIGVsc2UgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICB9XHJcbn0iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBS2hGOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBRS9COzs7O09BSUc7SUFDSCxZQUFvQixXQUE2QixFQUFVLGFBQStCLEVBQVUsR0FBeUI7UUFBekcsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBc0I7SUFBSSxDQUFDO0lBRWxJOzs7Ozs7T0FNRztJQUNILElBQWEsRUFBRSxDQUFDLFVBQWtCO1FBQzlCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJDLHFGQUFxRjtRQUVyRixJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7WUFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOztvSEF2QlEsc0JBQXNCO3dHQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsTUFBTTtpQkFDbkI7b0tBaUJnQixFQUFFO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSBcIi4vYWNjZXNzLWNvbnRyb2wuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIERpcmV0dGl2YSBjaGUgcGVybWV0dGUgZGkgZ2VzdGlyZSBpbCBjb250cm9sbG8gYWNjZXNzaSBzdSBjb21wb25lbnRpIEhUTUwuIFxyXG4gKiBcclxuICogUGVyIGdsaSBlc2VtcGkgZGkgdXRpbGl6em8gZmFyZSByaWZlcmltZW50byBhbCBSRUFETUUuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2FjXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sRGlyZWN0aXZlIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZSBcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgX2FjOiBBY2Nlc3NDb250cm9sU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnB1dCBhdXRvcmVmZXJlbnppYWxlIHBlciBsYSBkaXJldHRpdmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gIGVzcHJlc3Npb25lIGRhIHByb2Nlc3NhcmUgc2NyaXR0YSBjb21lIHtDaGlhdmV9OntWYWxvcmV9XHJcbiAgICAgKiBcclxuICAgICAqIExlIHtDaGlhdmV9IGRpc3BvbmliaWxpIHNvbm8gZGkgZGVmYXVsdCBcIlJcIiBwZXIgaSBydW9saSBlIFwiUFwiIHBlciBpIHBlcm1lc3NpLiDDiCBwb3NzaWJpbGUgZXNwYW5kZXJsZSBjb24gbGUgQ3VzdG9tIFBlcm1pc3Npb25zXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNldCBhYyhleHByZXNzaW9uOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgYWxsb3cgPSB0aGlzLl9hYy5oYXMoZXhwcmVzc2lvbik7XHJcblxyXG4gICAgICAgIC8vU2UgaG8gaSBwZXJtZXNzaSwgcHJvc2VndW8gY3JlYW5kbyBsYSB2aXN0YSBuZWwgRE9NLCBhbHRyaW1lbnRpIHJpbXVvdm8gaWwgdGVtcGxhdGVcclxuXHJcbiAgICAgICAgaWYgKGFsbG93KSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgICAgIGVsc2UgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,6 +1,6 @@
1
1
  import { LocalizationModule } from '@esfaenza/localizations';
2
2
  import { NgModule } from '@angular/core';
3
- import { ACC_LOCALE, ACC_CUSTOMKEY } from './tokens';
3
+ import { ACC_LOCALE, ACC_CUSTOMKEY, ACC_DEF_COND, ACC_DEF_COND_OP } from './tokens';
4
4
  import { AccessControlService } from './access-control.service';
5
5
  import { AccessControlRouteGuard } from './AccessControlRouteGuard';
6
6
  import { AccessControlDirective } from './access-control.directive';
@@ -14,15 +14,17 @@ export class AccessControlModule {
14
14
  AccessControlService,
15
15
  AccessControlRouteGuard,
16
16
  { provide: ACC_LOCALE, useValue: config?.locale || 'it-IT' },
17
- { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null }
17
+ { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null },
18
+ { provide: ACC_DEF_COND, useValue: config?.defaultCondition || null },
19
+ { provide: ACC_DEF_COND_OP, useValue: config?.defaultConditionLogicalOperator || '||' }
18
20
  ]
19
21
  };
20
22
  }
21
23
  }
22
- AccessControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- AccessControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective], imports: [LocalizationModule], exports: [AccessControlDirective, ContextAwareDirective] });
24
- AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, imports: [[LocalizationModule]] });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, decorators: [{
24
+ AccessControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ AccessControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective], imports: [LocalizationModule], exports: [AccessControlDirective, ContextAwareDirective] });
26
+ AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, imports: [LocalizationModule] });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, decorators: [{
26
28
  type: NgModule,
27
29
  args: [{
28
30
  imports: [LocalizationModule],
@@ -30,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
30
32
  exports: [AccessControlDirective, ContextAwareDirective]
31
33
  }]
32
34
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBT2xFLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFrQztRQUMvQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUU7Z0JBQ1Qsb0JBQW9CO2dCQUNwQix1QkFBdUI7Z0JBQ3ZCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVELEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUU7YUFDaEU7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0hBWFUsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBSGYsc0JBQXNCLEVBQUUscUJBQXFCLGFBRGxELGtCQUFrQixhQUVuQixzQkFBc0IsRUFBRSxxQkFBcUI7aUhBRTNDLG1CQUFtQixZQUpyQixDQUFDLGtCQUFrQixDQUFDOzJGQUlsQixtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLFlBQVksRUFBRSxDQUFDLHNCQUFzQixFQUFFLHFCQUFxQixDQUFDO29CQUM3RCxPQUFPLEVBQUMsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsQ0FBQztpQkFDeEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhbGl6YXRpb25Nb2R1bGUgfSBmcm9tICdAZXNmYWVuemEvbG9jYWxpemF0aW9ucyc7XHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBQ0NfTE9DQUxFLCBBQ0NfQ1VTVE9NS0VZfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9hY2Nlc3MtY29udHJvbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFJvdXRlR3VhcmQgfSBmcm9tICcuL0FjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkJztcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGV4dEF3YXJlRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0LWF3YXJlLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtMb2NhbGl6YXRpb25Nb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW0FjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsIENvbnRleHRBd2FyZURpcmVjdGl2ZV0sXHJcbiAgZXhwb3J0czpbQWNjZXNzQ29udHJvbERpcmVjdGl2ZSwgQ29udGV4dEF3YXJlRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29udHJvbE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QWNjZXNzQ29udHJvbE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEFjY2Vzc0NvbnRyb2xNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLFxyXG4gICAgICAgIEFjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkLFxyXG4gICAgICAgIHsgcHJvdmlkZTogQUNDX0xPQ0FMRSwgdXNlVmFsdWU6IGNvbmZpZz8ubG9jYWxlIHx8ICdpdC1JVCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFDQ19DVVNUT01LRVksIHVzZVZhbHVlOiBjb25maWc/LmN1c3RvbUtleSB8fCBudWxsIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWtDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVCxvQkFBb0I7Z0JBQ3BCLHVCQUF1QjtnQkFDdkIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRTtnQkFDL0QsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSwrQkFBK0IsSUFBSSxJQUFJLEVBQUU7YUFDeEY7U0FDRixDQUFDO0lBQ0osQ0FBQzs7aUhBYlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsaUJBSGYsc0JBQXNCLEVBQUUscUJBQXFCLGFBRGxELGtCQUFrQixhQUVuQixzQkFBc0IsRUFBRSxxQkFBcUI7a0hBRTNDLG1CQUFtQixZQUpwQixrQkFBa0I7NEZBSWpCLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUscUJBQXFCLENBQUM7b0JBQzdELE9BQU8sRUFBQyxDQUFDLHNCQUFzQixFQUFFLHFCQUFxQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gJ0Blc2ZhZW56YS9sb2NhbGl6YXRpb25zJztcclxuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFDQ19MT0NBTEUsIEFDQ19DVVNUT01LRVksIEFDQ19ERUZfQ09ORCwgQUNDX0RFRl9DT05EX09QIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0FjY2Vzc0NvbnRyb2xNb2R1bGVDb25maWcnO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gJy4vYWNjZXNzLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkIH0gZnJvbSAnLi9BY2Nlc3NDb250cm9sUm91dGVHdWFyZCc7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2FjY2Vzcy1jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRleHRBd2FyZURpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1hd2FyZS5kaXJlY3RpdmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbTG9jYWxpemF0aW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtBY2Nlc3NDb250cm9sRGlyZWN0aXZlLCBDb250ZXh0QXdhcmVEaXJlY3RpdmVdLFxyXG4gIGV4cG9ydHM6W0FjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsIENvbnRleHRBd2FyZURpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFjY2Vzc0NvbnRyb2xNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFjY2Vzc0NvbnRyb2xNb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFjY2Vzc0NvbnRyb2xNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBY2Nlc3NDb250cm9sTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBBY2Nlc3NDb250cm9sU2VydmljZSxcclxuICAgICAgICBBY2Nlc3NDb250cm9sUm91dGVHdWFyZCxcclxuICAgICAgICB7IHByb3ZpZGU6IEFDQ19MT0NBTEUsIHVzZVZhbHVlOiBjb25maWc/LmxvY2FsZSB8fCAnaXQtSVQnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBQ0NfQ1VTVE9NS0VZLCB1c2VWYWx1ZTogY29uZmlnPy5jdXN0b21LZXkgfHwgbnVsbCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQUNDX0RFRl9DT05ELCB1c2VWYWx1ZTogY29uZmlnPy5kZWZhdWx0Q29uZGl0aW9uIHx8IG51bGwgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFDQ19ERUZfQ09ORF9PUCwgdXNlVmFsdWU6IGNvbmZpZz8uZGVmYXVsdENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvciB8fCAnfHwnIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -1,12 +1,15 @@
1
1
  // Angular
2
- import { Injectable } from "@angular/core";
2
+ import { Inject, Injectable, Optional } from "@angular/core";
3
+ import { ACC_DEF_COND, ACC_DEF_COND_OP } from "./tokens";
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * Entrypoint di tutte le operazioni esposte dalla libreria access-control
6
7
  */
7
8
  export class AccessControlService {
8
9
  /** @ignore */
9
- constructor() {
10
+ constructor(ACC_DEF_COND, ACC_DEF_COND_OP) {
11
+ this.ACC_DEF_COND = ACC_DEF_COND;
12
+ this.ACC_DEF_COND_OP = ACC_DEF_COND_OP;
10
13
  /**
11
14
  * Indica se l'Identity è stata inizializzata
12
15
  */
@@ -59,6 +62,8 @@ export class AccessControlService {
59
62
  console.warn("Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default");
60
63
  return true;
61
64
  }
65
+ if (this.ACC_DEF_COND && this.ACC_DEF_COND_OP)
66
+ expression = `(${expression}) ${this.ACC_DEF_COND_OP} ${this.ACC_DEF_COND}`;
62
67
  //Espressione già valutata, non serve rivalutarla
63
68
  if (this.cache[expression])
64
69
  return this.cache[expression];
@@ -125,9 +130,19 @@ export class AccessControlService {
125
130
  return this.hasACExpression(expr);
126
131
  }
127
132
  }
128
- AccessControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
129
- AccessControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService, decorators: [{
133
+ AccessControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService, deps: [{ token: ACC_DEF_COND, optional: true }, { token: ACC_DEF_COND_OP, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
134
+ AccessControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService });
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService, decorators: [{
131
136
  type: Injectable
132
- }], ctorParameters: function () { return []; } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvYWNjZXNzLWNvbnRyb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBdUIvQixjQUFjO0lBQ2Q7UUF0QkE7O1dBRUc7UUFDSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNJLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUUxQyxjQUFjO1FBQ04sVUFBSyxHQUFPLEVBQUUsQ0FBQztRQUV2QixjQUFjO1FBQ04scUJBQWdCLEdBQXVDLEVBQUUsQ0FBQztJQVFsRCxDQUFDO0lBRWpCOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FBQyxRQUFvRDtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLDJCQUEyQixDQUFDLGlCQUFxRDtRQUN0RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVO1FBQ2YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlLENBQUMsVUFBa0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUhBQXVILENBQUMsQ0FBQztRQUV6SSxJQUFJLENBQUMsVUFBVTtZQUNiLE9BQU8sSUFBSSxD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O1FBQzFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSztZQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ1QsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7O1lBRWIsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7aUhBaEpVLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIEVudHJ5cG9pbnQgZGkgdHV0dGUgbGUgb3BlcmF6aW9uaSBlc3Bvc3RlIGRhbGxhIGxpYnJlcmlhIGFjY2Vzcy1jb250cm9sXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sU2VydmljZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBsJ0lkZW50aXR5IMOoIHN0YXRhIGluaXppYWxpenphdGFcclxuICAgKi9cclxuICBwdWJsaWMgSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHNvbm8gc3RhdGUgZWZmZXR0dWF0ZSBpbml6aWFsaXp6YXppb25pIGRpIEN1c3RvbSBQZXJtaXNzaW9uc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBJbml0aWFsaXplZEN1c3RvbTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgY2FjaGU6IHt9ID0ge307XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSB0YWdnZWRJdGVtc0NhY2hlOiB7IGtleTogc3RyaW5nLCBpdGVtczogc3RyaW5nW10gfVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIElkZW50aXR5IGFzc29jaWF0YSBhIHF1ZXN0J2lzdGFuemEgZGVsIFNlcnZpemlvIEFjY2VzcyBDb250cm9sLCB1dGlsZSBzZSBzaSB2dW9sZSBhdmVyZSBhY2Nlc3NvIGEgUnVvbGkgZSBQZXJtZXNzaSBkaXJldHRhbWVudGUgZGEgcXVpLCBwZXIgcXVhbHNpdm9nbGlhIG1vdGl2b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBJZGVudGl0eTogeyBSb2xlczogc3RyaW5nW10sIFBlcm1pc3Npb25zOiBzdHJpbmdbXSB9O1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXppYWxpenphIGwnSWRlbnRpdHkgZGVsIHNlcnZpemlvIGNvbiBpbCBtb2RlbGxvIHNwZWNpZmljYXRvXHJcbiAgICogXHJcbiAgICogQHBhcmFtcyB7eyBSb2xlczogc3RyaW5nW10sIFBlcm1pc3Npb25zOiBzdHJpbmdbXSB9fSBpZGVudGl0eSBJZGVudGl0w6AgYXBwbGljYXRpdmEgY29uIHJ1b2xpIGUgcGVybWVzc2lcclxuICAgKi9cclxuICBwdWJsaWMgaW5pdGlhbGl6ZUlkZW50aXR5KGlkZW50aXR5OiB7IFJvbGVzOiBzdHJpbmdbXSwgUGVybWlzc2lvbnM6IHN0cmluZ1tdIH0pIHtcclxuICAgIHRoaXMuSWRlbnRpdHkgPSBpZGVudGl0eTtcclxuICAgIHRoaXMuSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pemlhbGl6emEgaSBwZXJtZXNzaSBDdXN0b20gZGVsIHNlcnZpemlvIGNvbiBpbCBtb2RlbGxvIHNwZWNpZmljYXRvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHt7IGtleTogc3RyaW5nLCBpdGVtczogc3RyaW5nW10gfVtdfSBjdXN0b21QZXJtaXNzaW9ucyBQZXJtZXNzaSBDdXN0b21cclxuICAgKi9cclxuICBwdWJsaWMgaW5pdGlhbGl6ZUN1c3RvbVBlcm1pc3Npb25zKGN1c3RvbVBlcm1pc3Npb25zOiB7IGtleTogc3RyaW5nLCBpdGVtczogc3RyaW5nW10gfVtdKSB7XHJcbiAgICB0aGlzLnRhZ2dlZEl0ZW1zQ2FjaGUgPSBjdXN0b21QZXJtaXNzaW9ucztcclxuICAgIHRoaXMuSW5pdGlhbGl6ZWRDdXN0b20gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIG5lbGxhIHNlc3Npb25lIGF0dHVhbGUgZXNpc3RlIHVuIHV0ZW50ZSBsb2dnYXRvLiBGYSB1biBzZW1wbGljZSBjb250cm9sbG8gZGkgcHJlc2VuemEgc3VsbCdJZGVudGl0eVxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5JZGVudGl0eTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4cHJlc3Npb24gw6ggc2NyaXR0YSB0aXBvIC0tPiBSOlJvbGUxICYmIFA6UGVybWlzc2lvbjEgfHwgKFI6Um9sZTIgJiYgUDpQZXJtaXNzaW9uMSlcclxuICAgKiBRdWluZGkgcGl1dHRvc3RvIGNoZSBpbXBsZW1lbnRhcnNpIHVuIHBhcnNlciBkZWxsYSBtYWRvbm5hIGluIHN0aWxlIEFsZXNzYW5kcm8gcHJlbmRvIGxhIHN0cmFkYSBzdHJvbnphIGUgdmVsb2NlIGNvbiBsJ2V2YWwgOlBcclxuICAgKiBcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNBQ0V4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuSW5pdGlhbGl6ZWQpXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJBY2Nlc3MgQ29udHJvbCBTeXN0ZW0gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiBDYWxsIHRoaXMuYWNjZXNzQ29udHJvbC5pbml0aWFsaXplKC4uLiwgLi4uKSBiZWZvcmUgdXNpbmcgdGhlIHNlcnZpY2VcIik7XHJcblxyXG4gICAgaWYgKCFleHByZXNzaW9uKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuSWRlbnRpdHkpIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiRWxlbWVudG8gSWRlbnRpdHkgbm9uIHNwZWNpZmljYXRvIGluIEFjY2VzcyBDb250cm9sLiBHbGkgYWNjZXNzaSBzYXJhbm5vIHR1dHRpIGxpYmVyaSBkaSBkZWZhdWx0XCIpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vRXNwcmVzc2lvbmUgZ2nDoCB2YWx1dGF0YSwgbm9uIHNlcnZlIHJpdmFsdXRhcmxhXHJcbiAgICBpZiAodGhpcy5jYWNoZVtleHByZXNzaW9uXSlcclxuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbZXhwcmVzc2lvbl07XHJcblxyXG4gICAgdmFyIFJvbGVzUGVybWlzc2lvbnNSZWdleHAgPSAvLjpbXnwmKCldKy9nO1xyXG5cclxuICAgIHZhciBtYXRjaGVzID0gZXhwcmVzc2lvbi5tYXRjaChSb2xlc1Blcm1pc3Npb25zUmVnZXhwKTtcclxuICAgIFxyXG4gICAgaWYgKCFtYXRjaGVzKVxyXG4gICAgICB0aHJvdyBcIkVzcHJlc3Npb25lIEFjY2VzcyBDb250cm9sIG5vbiB2YWxpZGE6IFwiICsgZXhwcmVzc2lvbiArIFwiLiBBc3NpY3VyYXJzaSBjaGUgc2lhIHNjcml0dGEgaW4gbW9kbyBjb3JyZXR0b1wiO1xyXG5cclxuICAgIG1hdGNoZXMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgdmFyIHNwbGl0cyA9IHQuc3BsaXQoJzonKTtcclxuICAgICAgaWYgKHNwbGl0c1swXSA9PSBcIlJcIilcclxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbi5yZXBsYWNlKHQudHJpbSgpLCBcInRoaXMuaGFzUm9sZSgnXCIgKyBzcGxpdHNbMV0udHJpbSgpICsgXCInKVwiKTtcclxuICAgICAgZWxzZSBpZiAoc3BsaXRzWzBdID09IFwiUFwiKVxyXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnJlcGxhY2UodC50cmltKCksIFwidGhpcy5oYXNQZXJtaXNzaW9uKCdcIiArIHNwbGl0c1sxXS50cmltKCkgKyBcIicpXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24ucmVwbGFjZSh0LnRyaW0oKSwgXCJ0aGlzLmhhc0N1c3RvbSgnXCIgKyBzcGxpdHNbMV0udHJpbSgpICsgXCInLCAnXCIgKyBzcGxpdHNbMF0udHJpbSgpICsgXCInKVwiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciByZXQgPSA8Ym9vbGVhbj5ldmFsKGV4cHJlc3Npb24pO1xyXG4gICAgLy8gQ2FjaGUgdmFsb3JlXHJcbiAgICB0aGlzLmNhY2hlW2V4cHJlc3Npb25dID0gcmV0O1xyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFV0aWxpenphdG8gZGEgaGFzQUNFeHByZXNzaW9uXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUm9sZShyb2xlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5JZGVudGl0eSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJFbGVtZW50byBJZGVudGl0eSBub24gc3BlY2lmaWNhdG8gaW4gQWNjZXNzIENvbnRyb2wuIEdsaSBhY2Nlc3NpIHNhcmFubm8gdHV0dGkgbGliZXJpIGRpIGRlZmF1bHRcIilcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5JZGVudGl0eS5Sb2xlcyAmJiB0aGlzLklkZW50aXR5LlJvbGVzLmxlbmd0aCA+IDAgJiYgdGhpcy5JZGVudGl0eS5Sb2xlcy5pbmRleE9mKHJvbGUpICE9IC0xO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXRpbGl6emF0byBkYSBoYXNBQ0V4cHJlc3Npb25cclxuICAgKiBcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLklkZW50aXR5KSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIkVsZW1lbnRvIElkZW50aXR5IG5vbiBzcGVjaWZpY2F0byBpbiBBY2Nlc3MgQ29udHJvbC4gR2xpIGFjY2Vzc2kgc2FyYW5ubyB0dXR0aSBsaWJlcmkgZGkgZGVmYXVsdFwiKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLklkZW50aXR5LlBlcm1pc3Npb25zICYmIHRoaXMuSWRlbnRpdHkuUGVybWlzc2lvbnMubGVuZ3RoID4gMCAmJiB0aGlzLklkZW50aXR5LlBlcm1pc3Npb25zLmluZGV4T2YocGVybWlzc2lvbikgIT0gLTE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVdGlsaXp6YXRvIGRhIGhhc0FDRXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGhhc0N1c3RvbSh2YWx1ZTogc3RyaW5nLCB0YWc6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgdmFyIGl0ZW1zID0gdGhpcy50YWdnZWRJdGVtc0NhY2hlLmZpbmQodCA9PiB0LmtleSA9PSB0YWcpPy5pdGVtcztcclxuICAgIGlmICghaXRlbXMpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgZWxzZSBpZiAoaXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuICEhaXRlbXMuZmluZCh0ID0+IHQgPT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW50cnkgcG9pbnQgY2hlIGNvbnRyb2xsYSB1bidlc3ByZXNzaW9uZSBpZGVudGlmaWNhbnRlIHVuIHBlcm1lc3NvLCBhZCBlc2VtcGlvIFwiUDp2aXN1YWxpenphemlvbmVcIiBjb250cm9sbGEgY2hlIGwndXRlbnRlIGNvbGxlZ2F0byBhYmJpYSB1biBwZXJtZXNzbyBjaGUgc2kgY2hpYW1hIFwidmlzdWFsaXp6YXppb25lXCJcclxuICAgKi9cclxuICBwdWJsaWMgaGFzKGV4cHI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzQUNFeHByZXNzaW9uKGV4cHIpO1xyXG4gIH1cclxufSJdfQ==
137
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
138
+ type: Optional
139
+ }, {
140
+ type: Inject,
141
+ args: [ACC_DEF_COND]
142
+ }] }, { type: undefined, decorators: [{
143
+ type: Optional
144
+ }, {
145
+ type: Inject,
146
+ args: [ACC_DEF_COND_OP]
147
+ }] }]; } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvYWNjZXNzLWNvbnRyb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUV6RDs7R0FFRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUF1Qi9CLGNBQWM7SUFDZCxZQUFzRCxZQUFvQixFQUErQyxlQUF1QjtRQUExRixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUErQyxvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQXRCaEo7O1dBRUc7UUFDSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNJLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUUxQyxjQUFjO1FBQ04sVUFBSyxHQUFPLEVBQUUsQ0FBQztRQUV2QixjQUFjO1FBQ04scUJBQWdCLEdBQXVDLEVBQUUsQ0FBQztJQVFtRixDQUFDO0lBRXRKOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FBQyxRQUFvRDtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLDJCQUEyQixDQUFDLGlCQUFxRDtRQUN0RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVO1FBQ2YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixD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LENBQUMsSUFBSSxDQUFDLGtHQUFrRyxDQUFDLENBQUE7WUFDaEgsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEksQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxTQUFTLENBQUMsS0FBYSxFQUFFLEdBQVc7UUFDMUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxLQUFLO1lBQ1IsT0FBTyxJQUFJLENBQUM7YUFDVCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQzs7WUFFYixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxJQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDOztrSEFuSlUsb0JBQW9CLGtCQXdCQyxZQUFZLDZCQUFvRCxlQUFlO3NIQXhCcEcsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQXlCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVk7OzBCQUFpQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBQ0NfREVGX0NPTkQsIEFDQ19ERUZfQ09ORF9PUCB9IGZyb20gXCIuL3Rva2Vuc1wiO1xyXG5cclxuLyoqXHJcbiAqIEVudHJ5cG9pbnQgZGkgdHV0dGUgbGUgb3BlcmF6aW9uaSBlc3Bvc3RlIGRhbGxhIGxpYnJlcmlhIGFjY2Vzcy1jb250cm9sXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sU2VydmljZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBsJ0lkZW50aXR5IMOoIHN0YXRhIGluaXppYWxpenphdGFcclxuICAgKi9cclxuICBwdWJsaWMgSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHNvbm8gc3RhdGUgZWZmZXR0dWF0ZSBpbml6aWFsaXp6YXppb25pIGRpIEN1c3RvbSBQZXJtaXNzaW9uc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBJbml0aWFsaXplZEN1c3RvbTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgY2FjaGU6IHt9ID0ge307XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSB0YWdnZWRJdGVtc0NhY2hlOiB7IGtleTogc3RyaW5nLCBpdGVtczogc3RyaW5nW10gfVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIElkZW50aXR5IGFzc29jaWF0YSBhIHF1ZXN0J2lzdGFuemEgZGVsIFNlcnZpemlvIEFjY2VzcyBDb250cm9sLCB1dGlsZSBzZSBzaSB2dW9sZSBhdmVyZSBhY2Nlc3NvIGEgUnVvbGkgZSBQZXJtZXNzaSBkaXJldHRhbWVudGUgZGEgcXVpLCBwZXIgcXVhbHNpdm9nbGlhIG1vdGl2b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBJZGVudGl0eTogeyBSb2xlczogc3RyaW5nW10sIFBlcm1pc3Npb25zOiBzdHJpbmdbXSB9O1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoQUNDX0RFRl9DT05EKSBwcml2YXRlIEFDQ19ERUZfQ09ORDogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDQ19ERUZfQ09ORF9PUCkgcHJpdmF0ZSBBQ0NfREVGX0NPTkRfT1A6IHN0cmluZywpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml6aWFsaXp6YSBsJ0lkZW50aXR5IGRlbCBzZXJ2aXppbyBjb24gaWwgbW9kZWxsbyBzcGVjaWZpY2F0b1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbXMge3sgUm9sZXM6IHN0cmluZ1tdLCBQZXJtaXNzaW9uczogc3RyaW5nW10gfX0gaWRlbnRpdHkgSWRlbnRpdMOgIGFwcGxpY2F0aXZhIGNvbiBydW9saSBlIHBlcm1lc3NpXHJcbiAgICovXHJcbiAgcHVibGljIGluaXRpYWxpemVJZGVudGl0eShpZGVudGl0eTogeyBSb2xlczogc3RyaW5nW10sIFBlcm1pc3Npb25zOiBzdHJpbmdbXSB9KSB7XHJcbiAgICB0aGlzLklkZW50aXR5ID0gaWRlbnRpdHk7XHJcbiAgICB0aGlzLkluaXRpYWxpemVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXppYWxpenphIGkgcGVybWVzc2kgQ3VzdG9tIGRlbCBzZXJ2aXppbyBjb24gaWwgbW9kZWxsbyBzcGVjaWZpY2F0b1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7eyBrZXk6IHN0cmluZywgaXRlbXM6IHN0cmluZ1tdIH1bXX0gY3VzdG9tUGVybWlzc2lvbnMgUGVybWVzc2kgQ3VzdG9tXHJcbiAgICovXHJcbiAgcHVibGljIGluaXRpYWxpemVDdXN0b21QZXJtaXNzaW9ucyhjdXN0b21QZXJtaXNzaW9uczogeyBrZXk6IHN0cmluZywgaXRlbXM6IHN0cmluZ1tdIH1bXSkge1xyXG4gICAgdGhpcy50YWdnZWRJdGVtc0NhY2hlID0gY3VzdG9tUGVybWlzc2lvbnM7XHJcbiAgICB0aGlzLkluaXRpYWxpemVkQ3VzdG9tID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBuZWxsYSBzZXNzaW9uZSBhdHR1YWxlIGVzaXN0ZSB1biB1dGVudGUgbG9nZ2F0by4gRmEgdW4gc2VtcGxpY2UgY29udHJvbGxvIGRpIHByZXNlbnphIHN1bGwnSWRlbnRpdHlcclxuICAgKi9cclxuICBwdWJsaWMgaXNMb2dnZWRJbigpIHtcclxuICAgIHJldHVybiAhIXRoaXMuSWRlbnRpdHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHByZXNzaW9uIMOoIHNjcml0dGEgdGlwbyAtLT4gUjpSb2xlMSAmJiBQOlBlcm1pc3Npb24xIHx8IChSOlJvbGUyICYmIFA6UGVybWlzc2lvbjEpXHJcbiAgICogUXVpbmRpIHBpdXR0b3N0byBjaGUgaW1wbGVtZW50YXJzaSB1biBwYXJzZXIgZGVsbGEgbWFkb25uYSBpbiBzdGlsZSBBbGVzc2FuZHJvIHByZW5kbyBsYSBzdHJhZGEgc3Ryb256YSBlIHZlbG9jZSBjb24gbCdldmFsIDpQXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzQUNFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLkluaXRpYWxpemVkKVxyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQWNjZXNzIENvbnRyb2wgU3lzdGVtIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4gQ2FsbCB0aGlzLmFjY2Vzc0NvbnRyb2wuaW5pdGlhbGl6ZSguLi4sIC4uLikgYmVmb3JlIHVzaW5nIHRoZSBzZXJ2aWNlXCIpO1xyXG5cclxuICAgIGlmICghZXhwcmVzc2lvbilcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgaWYgKCF0aGlzLklkZW50aXR5KSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIkVsZW1lbnRvIElkZW50aXR5IG5vbiBzcGVjaWZpY2F0byBpbiBBY2Nlc3MgQ29udHJvbC4gR2xpIGFjY2Vzc2kgc2FyYW5ubyB0dXR0aSBsaWJlcmkgZGkgZGVmYXVsdFwiKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLkFDQ19ERUZfQ09ORCAmJiB0aGlzLkFDQ19ERUZfQ09ORF9PUClcclxuICAgICAgZXhwcmVzc2lvbiA9IGAoJHtleHByZXNzaW9ufSkgJHt0aGlzLkFDQ19ERUZfQ09ORF9PUH0gJHt0aGlzLkFDQ19ERUZfQ09ORH1gO1xyXG4gICAgICBcclxuICAgIC8vRXNwcmVzc2lvbmUgZ2nDoCB2YWx1dGF0YSwgbm9uIHNlcnZlIHJpdmFsdXRhcmxhXHJcbiAgICBpZiAodGhpcy5jYWNoZVtleHByZXNzaW9uXSlcclxuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbZXhwcmVzc2lvbl07XHJcblxyXG4gICAgdmFyIFJvbGVzUGVybWlzc2lvbnNSZWdleHAgPSAvLjpbXnwmKCldKy9nO1xyXG5cclxuICAgIHZhciBtYXRjaGVzID0gZXhwcmVzc2lvbi5tYXRjaChSb2xlc1Blcm1pc3Npb25zUmVnZXhwKTtcclxuICAgIFxyXG4gICAgaWYgKCFtYXRjaGVzKVxyXG4gICAgICB0aHJvdyBcIkVzcHJlc3Npb25lIEFjY2VzcyBDb250cm9sIG5vbiB2YWxpZGE6IFwiICsgZXhwcmVzc2lvbiArIFwiLiBBc3NpY3VyYXJzaSBjaGUgc2lhIHNjcml0dGEgaW4gbW9kbyBjb3JyZXR0b1wiO1xyXG5cclxuICAgIG1hdGNoZXMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgdmFyIHNwbGl0cyA9IHQuc3BsaXQoJzonKTtcclxuICAgICAgaWYgKHNwbGl0c1swXSA9PSBcIlJcIilcclxuICAgICAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbi5yZXBsYWNlKHQudHJpbSgpLCBcInRoaXMuaGFzUm9sZSgnXCIgKyBzcGxpdHNbMV0udHJpbSgpICsgXCInKVwiKTtcclxuICAgICAgZWxzZSBpZiAoc3BsaXRzWzBdID09IFwiUFwiKVxyXG4gICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnJlcGxhY2UodC50cmltKCksIFwidGhpcy5oYXNQZXJtaXNzaW9uKCdcIiArIHNwbGl0c1sxXS50cmltKCkgKyBcIicpXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24ucmVwbGFjZSh0LnRyaW0oKSwgXCJ0aGlzLmhhc0N1c3RvbSgnXCIgKyBzcGxpdHNbMV0udHJpbSgpICsgXCInLCAnXCIgKyBzcGxpdHNbMF0udHJpbSgpICsgXCInKVwiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciByZXQgPSA8Ym9vbGVhbj5ldmFsKGV4cHJlc3Npb24pO1xyXG4gICAgLy8gQ2FjaGUgdmFsb3JlXHJcbiAgICB0aGlzLmNhY2hlW2V4cHJlc3Npb25dID0gcmV0O1xyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFV0aWxpenphdG8gZGEgaGFzQUNFeHByZXNzaW9uXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUm9sZShyb2xlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5JZGVudGl0eSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJFbGVtZW50byBJZGVudGl0eSBub24gc3BlY2lmaWNhdG8gaW4gQWNjZXNzIENvbnRyb2wuIEdsaSBhY2Nlc3NpIHNhcmFubm8gdHV0dGkgbGliZXJpIGRpIGRlZmF1bHRcIilcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5JZGVudGl0eS5Sb2xlcyAmJiB0aGlzLklkZW50aXR5LlJvbGVzLmxlbmd0aCA+IDAgJiYgdGhpcy5JZGVudGl0eS5Sb2xlcy5pbmRleE9mKHJvbGUpICE9IC0xO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXRpbGl6emF0byBkYSBoYXNBQ0V4cHJlc3Npb25cclxuICAgKiBcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNQZXJtaXNzaW9uKHBlcm1pc3Npb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLklkZW50aXR5KSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIkVsZW1lbnRvIElkZW50aXR5IG5vbiBzcGVjaWZpY2F0byBpbiBBY2Nlc3MgQ29udHJvbC4gR2xpIGFjY2Vzc2kgc2FyYW5ubyB0dXR0aSBsaWJlcmkgZGkgZGVmYXVsdFwiKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLklkZW50aXR5LlBlcm1pc3Npb25zICYmIHRoaXMuSWRlbnRpdHkuUGVybWlzc2lvbnMubGVuZ3RoID4gMCAmJiB0aGlzLklkZW50aXR5LlBlcm1pc3Npb25zLmluZGV4T2YocGVybWlzc2lvbikgIT0gLTE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVdGlsaXp6YXRvIGRhIGhhc0FDRXhwcmVzc2lvblxyXG4gICAqIFxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGhhc0N1c3RvbSh2YWx1ZTogc3RyaW5nLCB0YWc6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgdmFyIGl0ZW1zID0gdGhpcy50YWdnZWRJdGVtc0NhY2hlLmZpbmQodCA9PiB0LmtleSA9PSB0YWcpPy5pdGVtcztcclxuICAgIGlmICghaXRlbXMpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgZWxzZSBpZiAoaXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuICEhaXRlbXMuZmluZCh0ID0+IHQgPT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW50cnkgcG9pbnQgY2hlIGNvbnRyb2xsYSB1bidlc3ByZXNzaW9uZSBpZGVudGlmaWNhbnRlIHVuIHBlcm1lc3NvLCBhZCBlc2VtcGlvIFwiUDp2aXN1YWxpenphemlvbmVcIiBjb250cm9sbGEgY2hlIGwndXRlbnRlIGNvbGxlZ2F0byBhYmJpYSB1biBwZXJtZXNzbyBjaGUgc2kgY2hpYW1hIFwidmlzdWFsaXp6YXppb25lXCJcclxuICAgKi9cclxuICBwdWJsaWMgaGFzKGV4cHI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzQUNFeHByZXNzaW9uKGV4cHIpO1xyXG4gIH1cclxufSJdfQ==
@@ -24,9 +24,9 @@ export class ContextAwareDirective {
24
24
  element.nativeElement.setAttribute("enabled", "true");
25
25
  }
26
26
  }
27
- ContextAwareDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ContextAwareDirective, deps: [{ token: i0.ElementRef }, { token: i1.ComponentContext, optional: true }, { token: i2.AccessControlService }, { token: ACC_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
28
- ContextAwareDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: ContextAwareDirective, selector: "[contextAware]", ngImport: i0 });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ContextAwareDirective, decorators: [{
27
+ ContextAwareDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ContextAwareDirective, deps: [{ token: i0.ElementRef }, { token: i1.ComponentContext, optional: true }, { token: i2.AccessControlService }, { token: ACC_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
28
+ ContextAwareDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ContextAwareDirective, selector: "[contextAware]", ngImport: i0 });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ContextAwareDirective, decorators: [{
30
30
  type: Directive,
31
31
  args: [{
32
32
  selector: '[contextAware]',
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
39
39
  type: Inject,
40
40
  args: [ACC_CUSTOMKEY]
41
41
  }] }]; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1hd2FyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvbGliL2NvbnRleHQtYXdhcmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFjLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7OztBQUt4Qzs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUU5Qjs7OztPQUlHO0lBQ0gsWUFBWSxPQUFtQixFQUFzQixPQUF5QixFQUFVLEVBQXdCLEVBQTZDLGFBQXFCO1FBQTdILFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFBNkMsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDOUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLENBQUM7UUFFckksSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7a0hBWlEscUJBQXFCLGdJQU93RyxhQUFhO3NHQVAxSSxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3Qjs7MEJBUXFDLFFBQVE7OzBCQUF5RSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gXCIuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQUNDX0NVU1RPTUtFWSB9IGZyb20gXCIuL3Rva2Vuc1wiXHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gXCIuL21vZGVscy9Db21wb25lbnRDb250ZXh0XCI7XHJcblxyXG4vKipcclxuICogRGlyZXR0aXZhIGNoZSBwZXJtZXR0ZSBkaSBjYXBpcmUgc2UgbCdlbGVtZW50byBIVE1MIHN1IGN1aSDDqCB1dGlsaXp6YXRhIGRldidlc3NlcmUgZGlzYWJpbGl0YXRvIG8gbm8uXHJcbiAqIFxyXG4gKiBOb24gaGEgZWZmZXR0byBzdWdsaSBlbGVtZW50aSBkaWNoaWFyYXRpIGluIGNvbXBvbmVudGkgY2hlIG5vbiBkaWNoaWFyYW5vIGFsY3VuIENvbXBvbmVudENvbnRleHRcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY29udGV4dEF3YXJlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0QXdhcmVEaXJlY3RpdmUge1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIEBPcHRpb25hbCgpIHByaXZhdGUgY29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgcHJpdmF0ZSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoQUNDX0NVU1RPTUtFWSkgcHJpdmF0ZSBBQ0NfQ1VTVE9NS0VZOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgYWxsb3cgPSAhdGhpcy5jb250ZXh0IHx8ICF0aGlzLmNvbnRleHQubmFtZSB8fCAhdGhpcy5BQ0NfQ1VTVE9NS0VZIHx8IHRoaXMuYWMuaGFzKHRoaXMuQUNDX0NVU1RPTUtFWSArIFwiOlwiICsgdGhpcy5jb250ZXh0Lm5hbWUsKTtcclxuXHJcbiAgICAgICAgaWYgKCFhbGxvdylcclxuICAgICAgICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcImVuYWJsZWRcIiwgXCJ0cnVlXCIpO1xyXG4gICAgfVxyXG59Il19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1hd2FyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvbGliL2NvbnRleHQtYXdhcmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFjLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7OztBQUt4Qzs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUU5Qjs7OztPQUlHO0lBQ0gsWUFBWSxPQUFtQixFQUFzQixPQUF5QixFQUFVLEVBQXdCLEVBQTZDLGFBQXFCO1FBQTdILFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFBNkMsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDOUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLENBQUM7UUFFckksSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7bUhBWlEscUJBQXFCLGdJQU93RyxhQUFhO3VHQVAxSSxxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3Qjs7MEJBUXFDLFFBQVE7OzBCQUF5RSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gXCIuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQUNDX0NVU1RPTUtFWSB9IGZyb20gXCIuL3Rva2Vuc1wiXHJcblxyXG4vLyBDbGFzc2lcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gXCIuL21vZGVscy9Db21wb25lbnRDb250ZXh0XCI7XHJcblxyXG4vKipcclxuICogRGlyZXR0aXZhIGNoZSBwZXJtZXR0ZSBkaSBjYXBpcmUgc2UgbCdlbGVtZW50byBIVE1MIHN1IGN1aSDDqCB1dGlsaXp6YXRhIGRldidlc3NlcmUgZGlzYWJpbGl0YXRvIG8gbm8uXHJcbiAqIFxyXG4gKiBOb24gaGEgZWZmZXR0byBzdWdsaSBlbGVtZW50aSBkaWNoaWFyYXRpIGluIGNvbXBvbmVudGkgY2hlIG5vbiBkaWNoaWFyYW5vIGFsY3VuIENvbXBvbmVudENvbnRleHRcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY29udGV4dEF3YXJlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0QXdhcmVEaXJlY3RpdmUge1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIEBPcHRpb25hbCgpIHByaXZhdGUgY29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgcHJpdmF0ZSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoQUNDX0NVU1RPTUtFWSkgcHJpdmF0ZSBBQ0NfQ1VTVE9NS0VZOiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgYWxsb3cgPSAhdGhpcy5jb250ZXh0IHx8ICF0aGlzLmNvbnRleHQubmFtZSB8fCAhdGhpcy5BQ0NfQ1VTVE9NS0VZIHx8IHRoaXMuYWMuaGFzKHRoaXMuQUNDX0NVU1RPTUtFWSArIFwiOlwiICsgdGhpcy5jb250ZXh0Lm5hbWUsKTtcclxuXHJcbiAgICAgICAgaWYgKCFhbGxvdylcclxuICAgICAgICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcImVuYWJsZWRcIiwgXCJ0cnVlXCIpO1xyXG4gICAgfVxyXG59Il19
@@ -3,4 +3,4 @@
3
3
  */
4
4
  export class AccessControlModuleConfig {
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvbW9kZWxzL0FjY2Vzc0NvbnRyb2xNb2R1bGVDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0NBYXJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvbmZpZ3VyYXppb25lIE1vZHVsbyBBY2Nlc3NDb250cm9sLiBTZSBub24gZm9ybml0YSB2ZXJyw6AgZ2VuZXJhdGEgYXV0b21hdGljYW1lbnRlIGNvbiBsb2NhbGUgJ2l0LUlUJ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFjY2Vzc0NvbnRyb2xNb2R1bGVDb25maWcge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogbG9jYWxlIGRlbGwnYXBwbGljYXppb25lIGluIGZvcm1hIHN0YW5kYXJkLCBhZCBlc2VtcGlvIFwiaXQtSVRcIiwgXCJlbi1VU1wiLCBldGMuLi5cclxuICAgICAqIFxyXG4gICAgICogQXR0dWFsbWVudGUgc2kgc3VwcG9ydGFubyBzb2xvIGxlIGxpbmd1ZSBJdGFsaWFubyBlIEluZ2xlc2VcclxuICAgICAqL1xyXG4gICAgbG9jYWxlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGlhdmUgY3VzdG9tIHN1IGN1aSBsYSAqKmNvbnRleHRBd2FyZURpcmVjdGl2ZSoqIHNpIGJhc2EgcGVyIGNvbnRyb2xsYXJlIHNlIGwnZWxlbWVudG8gw6ggYWJpbGl0YXRvIG8gbWVub1xyXG4gICAgICovXHJcbiAgICBjdXN0b21LZXk6IHN0cmluZztcclxufSJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvbW9kZWxzL0FjY2Vzc0NvbnRyb2xNb2R1bGVDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0NBaUJyQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb25maWd1cmF6aW9uZSBNb2R1bG8gQWNjZXNzQ29udHJvbC4gU2Ugbm9uIGZvcm5pdGEgdmVycsOgIGdlbmVyYXRhIGF1dG9tYXRpY2FtZW50ZSBjb24gbG9jYWxlICdpdC1JVCdcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sTW9kdWxlQ29uZmlnIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGxvY2FsZSBkZWxsJ2FwcGxpY2F6aW9uZSBpbiBmb3JtYSBzdGFuZGFyZCwgYWQgZXNlbXBpbyBcIml0LUlUXCIsIFwiZW4tVVNcIiwgZXRjLi4uXHJcbiAgICAgKiBcclxuICAgICAqIEF0dHVhbG1lbnRlIHNpIHN1cHBvcnRhbm8gc29sbyBsZSBsaW5ndWUgSXRhbGlhbm8gZSBJbmdsZXNlXHJcbiAgICAgKi9cclxuICAgIGxvY2FsZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBDaGlhdmUgY3VzdG9tIHN1IGN1aSBsYSAqKmNvbnRleHRBd2FyZURpcmVjdGl2ZSoqIHNpIGJhc2EgcGVyIGNvbnRyb2xsYXJlIHNlIGwnZWxlbWVudG8gw6ggYWJpbGl0YXRvIG8gbWVubyAqL1xyXG4gICAgY3VzdG9tS2V5OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIENvbmRpemlvbmUgZGkgZGVmYXVsdCBkYSBhZ2dpdW5nZXJlIGEgb2duaSBjb25kaXppb25lIHV0ZW50ZS4gRXM6ICdSOkphY2UgQWRtaW4nICovXHJcbiAgICBkZWZhdWx0Q29uZGl0aW9uPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBSZWxhemlvbmUgbG9naWNhIGZyYSBsYSBjb25kaXppb25lIGRpIGRlZmF1bHQgZSBsYSBjb25kaXppb25lIHV0ZW50ZS4gRXM6ICd8fCcuIERpIGRlZmF1bHQgdmllbmUgdXRpbGl6emF0byBsJ09SIGxvZ2ljbyAqL1xyXG4gICAgZGVmYXVsdENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvcj86IHN0cmluZztcclxufSJdfQ==
@@ -5,9 +5,9 @@ import * as i0 from "@angular/core";
5
5
  */
6
6
  export class ComponentContext {
7
7
  }
8
- ComponentContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9
- ComponentContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext, decorators: [{
8
+ ComponentContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9
+ ComponentContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext, decorators: [{
11
11
  type: Injectable
12
12
  }] });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50Q29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvbW9kZWxzL0NvbXBvbmVudENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBUb2tlbiBkYSBpbmlldHRhcmUgcGVyIG9nbmkgc2luZ29sbyBjb21wb25lbnRlIHBlciBjdWkgc2kgdnVvbGUgZGlzYXR0aXZhcmUvYXR0aXZhcmUgbWFzc2l2YW1lbnRlIGRlZ2xpIGlucHV0IGluIG1hbmllcmEgY29udGVzdHVhbGVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudENvbnRleHR7XHJcbiAgICAvKipcclxuICAgICogTm9tZSBkZWwgQ29udGVzdG8gYXNzZWduYXRvIGFsIENvbXBvbmVudGVcclxuICAgICovXHJcbiAgICBuYW1lIDogc3RyaW5nO1xyXG59Il19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50Q29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvbW9kZWxzL0NvbXBvbmVudENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCOzs4R0FBaEIsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBUb2tlbiBkYSBpbmlldHRhcmUgcGVyIG9nbmkgc2luZ29sbyBjb21wb25lbnRlIHBlciBjdWkgc2kgdnVvbGUgZGlzYXR0aXZhcmUvYXR0aXZhcmUgbWFzc2l2YW1lbnRlIGRlZ2xpIGlucHV0IGluIG1hbmllcmEgY29udGVzdHVhbGVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudENvbnRleHR7XHJcbiAgICAvKipcclxuICAgICogTm9tZSBkZWwgQ29udGVzdG8gYXNzZWduYXRvIGFsIENvbXBvbmVudGVcclxuICAgICovXHJcbiAgICBuYW1lIDogc3RyaW5nO1xyXG59Il19
@@ -1,10 +1,10 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- /**
3
- * Token che racchiude il locale scelto per l'applicazione
4
- */
2
+ /** Token che racchiude il locale scelto per l'applicazione */
5
3
  export const ACC_LOCALE = new InjectionToken('ACC_LOCALE');
6
- /**
7
- * Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext
8
- */
4
+ /** Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext */
9
5
  export const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBMkIsSUFBSSxjQUFjLENBQVMsWUFBWSxDQUFDLENBQUM7QUFFM0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQTJCLElBQUksY0FBYyxDQUFTLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBUb2tlbiBjaGUgcmFjY2hpdWRlIGlsIGxvY2FsZSBzY2VsdG8gcGVyIGwnYXBwbGljYXppb25lXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQUNDX0xPQ0FMRTogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdBQ0NfTE9DQUxFJyk7XHJcblxyXG4vKipcclxuICogVG9rZW4gY2hlIHJhY2NoaXVkZSBsYSBjaGlhdmUgY3VzdG9tIGRhIGNvbnRyb2xsYXJlIHF1YW5kbyBzaSBlZmZldHR1YW5vIGNvbnRyb2xsaSBzdWwgQ29tcG9uZW50Q29udGV4dFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEFDQ19DVVNUT01LRVk6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQUNDX0NVU1RPTUtFWScpOyJdfQ==
6
+ /** Token che indica la condizione di default da aggiungere ai check utente */
7
+ export const ACC_DEF_COND = new InjectionToken('ACC_DEF_COND');
8
+ /** Token che indica l'operatore della condizione di default da aggiungere ai check utente */
9
+ export const ACC_DEF_COND_OP = new InjectionToken('ACC_DEF_COND_OP');
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUEyQixJQUFJLGNBQWMsQ0FBUyxZQUFZLENBQUMsQ0FBQztBQUUzRiw4R0FBOEc7QUFDOUcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixJQUFJLGNBQWMsQ0FBUyxlQUFlLENBQUMsQ0FBQztBQUVqRyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUEyQixJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUUvRiw2RkFBNkY7QUFDN0YsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUEyQixJQUFJLGNBQWMsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKiBUb2tlbiBjaGUgcmFjY2hpdWRlIGlsIGxvY2FsZSBzY2VsdG8gcGVyIGwnYXBwbGljYXppb25lICovXHJcbmV4cG9ydCBjb25zdCBBQ0NfTE9DQUxFOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FDQ19MT0NBTEUnKTtcclxuXHJcbi8qKiBUb2tlbiBjaGUgcmFjY2hpdWRlIGxhIGNoaWF2ZSBjdXN0b20gZGEgY29udHJvbGxhcmUgcXVhbmRvIHNpIGVmZmV0dHVhbm8gY29udHJvbGxpIHN1bCBDb21wb25lbnRDb250ZXh0ICovXHJcbmV4cG9ydCBjb25zdCBBQ0NfQ1VTVE9NS0VZOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FDQ19DVVNUT01LRVknKTtcclxuXHJcbi8qKiBUb2tlbiBjaGUgaW5kaWNhIGxhIGNvbmRpemlvbmUgZGkgZGVmYXVsdCBkYSBhZ2dpdW5nZXJlIGFpIGNoZWNrIHV0ZW50ZSAqL1xyXG5leHBvcnQgY29uc3QgQUNDX0RFRl9DT05EOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FDQ19ERUZfQ09ORCcpO1xyXG5cclxuLyoqIFRva2VuIGNoZSBpbmRpY2EgbCdvcGVyYXRvcmUgZGVsbGEgY29uZGl6aW9uZSBkaSBkZWZhdWx0IGRhIGFnZ2l1bmdlcmUgYWkgY2hlY2sgdXRlbnRlICovXHJcbmV4cG9ydCBjb25zdCBBQ0NfREVGX0NPTkRfT1A6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQUNDX0RFRl9DT05EX09QJyk7Il19
@@ -4,14 +4,14 @@ import { InjectionToken, Injectable, Optional, Inject, Directive, Input, NgModul
4
4
  import * as i1 from '@esfaenza/extensions';
5
5
  import * as i3 from '@angular/router';
6
6
 
7
- /**
8
- * Token che racchiude il locale scelto per l'applicazione
9
- */
7
+ /** Token che racchiude il locale scelto per l'applicazione */
10
8
  const ACC_LOCALE = new InjectionToken('ACC_LOCALE');
11
- /**
12
- * Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext
13
- */
14
- const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
9
+ /** Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext */
10
+ const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
11
+ /** Token che indica la condizione di default da aggiungere ai check utente */
12
+ const ACC_DEF_COND = new InjectionToken('ACC_DEF_COND');
13
+ /** Token che indica l'operatore della condizione di default da aggiungere ai check utente */
14
+ const ACC_DEF_COND_OP = new InjectionToken('ACC_DEF_COND_OP');
15
15
 
16
16
  // Angular
17
17
  /**
@@ -19,7 +19,9 @@ const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
19
19
  */
20
20
  class AccessControlService {
21
21
  /** @ignore */
22
- constructor() {
22
+ constructor(ACC_DEF_COND, ACC_DEF_COND_OP) {
23
+ this.ACC_DEF_COND = ACC_DEF_COND;
24
+ this.ACC_DEF_COND_OP = ACC_DEF_COND_OP;
23
25
  /**
24
26
  * Indica se l'Identity è stata inizializzata
25
27
  */
@@ -72,6 +74,8 @@ class AccessControlService {
72
74
  console.warn("Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default");
73
75
  return true;
74
76
  }
77
+ if (this.ACC_DEF_COND && this.ACC_DEF_COND_OP)
78
+ expression = `(${expression}) ${this.ACC_DEF_COND_OP} ${this.ACC_DEF_COND}`;
75
79
  //Espressione già valutata, non serve rivalutarla
76
80
  if (this.cache[expression])
77
81
  return this.cache[expression];
@@ -139,11 +143,23 @@ class AccessControlService {
139
143
  return this.hasACExpression(expr);
140
144
  }
141
145
  }
142
- AccessControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
143
- AccessControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService });
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService, decorators: [{
146
+ AccessControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService, deps: [{ token: ACC_DEF_COND, optional: true }, { token: ACC_DEF_COND_OP, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
147
+ AccessControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService });
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService, decorators: [{
145
149
  type: Injectable
146
- }], ctorParameters: function () { return []; } });
150
+ }], ctorParameters: function () {
151
+ return [{ type: undefined, decorators: [{
152
+ type: Optional
153
+ }, {
154
+ type: Inject,
155
+ args: [ACC_DEF_COND]
156
+ }] }, { type: undefined, decorators: [{
157
+ type: Optional
158
+ }, {
159
+ type: Inject,
160
+ args: [ACC_DEF_COND_OP]
161
+ }] }];
162
+ } });
147
163
 
148
164
  /**
149
165
  * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe
@@ -247,9 +263,9 @@ class AccessControlRouteGuard {
247
263
  onRedirectInProgress() {
248
264
  }
249
265
  }
250
- AccessControlRouteGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard, deps: [{ token: i1.MessageService }, { token: AccessControlService }, { token: i3.Router }, { token: ACC_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
251
- AccessControlRouteGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard });
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard, decorators: [{
266
+ AccessControlRouteGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard, deps: [{ token: i1.MessageService }, { token: AccessControlService }, { token: i3.Router }, { token: ACC_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
267
+ AccessControlRouteGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard });
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard, decorators: [{
253
269
  type: Injectable
254
270
  }], ctorParameters: function () {
255
271
  return [{ type: i1.MessageService }, { type: AccessControlService }, { type: i3.Router }, { type: undefined, decorators: [{
@@ -293,9 +309,9 @@ class AccessControlDirective {
293
309
  this.viewContainer.clear();
294
310
  }
295
311
  }
296
- AccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
297
- AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac" }, ngImport: i0 });
298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlDirective, decorators: [{
312
+ AccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
313
+ AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac" }, ngImport: i0 });
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlDirective, decorators: [{
299
315
  type: Directive,
300
316
  args: [{
301
317
  selector: '[ac]',
@@ -309,9 +325,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
309
325
  */
310
326
  class ComponentContext {
311
327
  }
312
- ComponentContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
313
- ComponentContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext });
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext, decorators: [{
328
+ ComponentContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
329
+ ComponentContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext });
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext, decorators: [{
315
331
  type: Injectable
316
332
  }] });
317
333
 
@@ -336,9 +352,9 @@ class ContextAwareDirective {
336
352
  element.nativeElement.setAttribute("enabled", "true");
337
353
  }
338
354
  }
339
- ContextAwareDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ContextAwareDirective, deps: [{ token: i0.ElementRef }, { token: ComponentContext, optional: true }, { token: AccessControlService }, { token: ACC_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
340
- ContextAwareDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: ContextAwareDirective, selector: "[contextAware]", ngImport: i0 });
341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ContextAwareDirective, decorators: [{
355
+ ContextAwareDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ContextAwareDirective, deps: [{ token: i0.ElementRef }, { token: ComponentContext, optional: true }, { token: AccessControlService }, { token: ACC_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
356
+ ContextAwareDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ContextAwareDirective, selector: "[contextAware]", ngImport: i0 });
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ContextAwareDirective, decorators: [{
342
358
  type: Directive,
343
359
  args: [{
344
360
  selector: '[contextAware]',
@@ -362,15 +378,17 @@ class AccessControlModule {
362
378
  AccessControlService,
363
379
  AccessControlRouteGuard,
364
380
  { provide: ACC_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
365
- { provide: ACC_CUSTOMKEY, useValue: (config === null || config === void 0 ? void 0 : config.customKey) || null }
381
+ { provide: ACC_CUSTOMKEY, useValue: (config === null || config === void 0 ? void 0 : config.customKey) || null },
382
+ { provide: ACC_DEF_COND, useValue: (config === null || config === void 0 ? void 0 : config.defaultCondition) || null },
383
+ { provide: ACC_DEF_COND_OP, useValue: (config === null || config === void 0 ? void 0 : config.defaultConditionLogicalOperator) || '||' }
366
384
  ]
367
385
  };
368
386
  }
369
387
  }
370
- AccessControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
371
- AccessControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective], imports: [LocalizationModule], exports: [AccessControlDirective, ContextAwareDirective] });
372
- AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, imports: [[LocalizationModule]] });
373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, decorators: [{
388
+ AccessControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
389
+ AccessControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective], imports: [LocalizationModule], exports: [AccessControlDirective, ContextAwareDirective] });
390
+ AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, imports: [LocalizationModule] });
391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, decorators: [{
374
392
  type: NgModule,
375
393
  args: [{
376
394
  imports: [LocalizationModule],
@@ -393,5 +411,5 @@ class AccessControlModuleConfig {
393
411
  * Generated bundle index. Do not edit.
394
412
  */
395
413
 
396
- export { ACC_CUSTOMKEY, ACC_LOCALE, AccessControlDirective, AccessControlModule, AccessControlModuleConfig, AccessControlRouteGuard, AccessControlService, ComponentContext, ContextAwareDirective };
414
+ export { ACC_CUSTOMKEY, ACC_DEF_COND, ACC_DEF_COND_OP, ACC_LOCALE, AccessControlDirective, AccessControlModule, AccessControlModuleConfig, AccessControlRouteGuard, AccessControlService, ComponentContext, ContextAwareDirective };
397
415
  //# sourceMappingURL=esfaenza-access-control.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-access-control.mjs","sources":["../../../projects/access-control/src/lib/tokens.ts","../../../projects/access-control/src/lib/access-control.service.ts","../../../projects/access-control/src/lib/AccessControlRouteGuard.ts","../../../projects/access-control/src/lib/access-control.directive.ts","../../../projects/access-control/src/lib/models/ComponentContext.ts","../../../projects/access-control/src/lib/context-aware.directive.ts","../../../projects/access-control/src/lib/access-control.module.ts","../../../projects/access-control/src/lib/models/AccessControlModuleConfig.ts","../../../projects/access-control/src/public-api.ts","../../../projects/access-control/src/esfaenza-access-control.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Token che racchiude il locale scelto per l'applicazione\r\n */\r\nexport const ACC_LOCALE: InjectionToken<string> = new InjectionToken<string>('ACC_LOCALE');\r\n\r\n/**\r\n * Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext\r\n */\r\nexport const ACC_CUSTOMKEY: InjectionToken<string> = new InjectionToken<string>('ACC_CUSTOMKEY');","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n/**\r\n * Entrypoint di tutte le operazioni esposte dalla libreria access-control\r\n */\r\n@Injectable()\r\nexport class AccessControlService {\r\n\r\n /**\r\n * Indica se l'Identity è stata inizializzata\r\n */\r\n public Initialized: boolean = false;\r\n\r\n /**\r\n * Indica se sono state effettuate inizializzazioni di Custom Permissions\r\n */\r\n public InitializedCustom: boolean = false;\r\n\r\n /** @ignore */\r\n private cache: {} = {};\r\n\r\n /** @ignore */\r\n private taggedItemsCache: { key: string, items: string[] }[] = [];\r\n\r\n /**\r\n * Identity associata a quest'istanza del Servizio Access Control, utile se si vuole avere accesso a Ruoli e Permessi direttamente da qui, per qualsivoglia motivo\r\n */\r\n public Identity: { Roles: string[], Permissions: string[] };\r\n\r\n /** @ignore */\r\n constructor() { }\r\n\r\n /**\r\n * Inizializza l'Identity del servizio con il modello specificato\r\n * \r\n * @params {{ Roles: string[], Permissions: string[] }} identity Identità applicativa con ruoli e permessi\r\n */\r\n public initializeIdentity(identity: { Roles: string[], Permissions: string[] }) {\r\n this.Identity = identity;\r\n this.Initialized = true;\r\n }\r\n\r\n /**\r\n * Inizializza i permessi Custom del servizio con il modello specificato\r\n * \r\n * @param {{ key: string, items: string[] }[]} customPermissions Permessi Custom\r\n */\r\n public initializeCustomPermissions(customPermissions: { key: string, items: string[] }[]) {\r\n this.taggedItemsCache = customPermissions;\r\n this.InitializedCustom = true;\r\n }\r\n\r\n /**\r\n * Indica se nella sessione attuale esiste un utente loggato. Fa un semplice controllo di presenza sull'Identity\r\n */\r\n public isLoggedIn() {\r\n return !!this.Identity;\r\n }\r\n\r\n /**\r\n * Expression è scritta tipo --> R:Role1 && P:Permission1 || (R:Role2 && P:Permission1)\r\n * Quindi piuttosto che implementarsi un parser della madonna in stile Alessandro prendo la strada stronza e veloce con l'eval :P\r\n * \r\n * @ignore\r\n */\r\n private hasACExpression(expression: string): boolean {\r\n if (!this.Initialized)\r\n console.error(\"Access Control System has not been initialized. Call this.accessControl.initialize(..., ...) before using the service\");\r\n\r\n if (!expression)\r\n return true;\r\n\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n\r\n //Espressione già valutata, non serve rivalutarla\r\n if (this.cache[expression])\r\n return this.cache[expression];\r\n\r\n var RolesPermissionsRegexp = /.:[^|&()]+/g;\r\n\r\n var matches = expression.match(RolesPermissionsRegexp);\r\n \r\n if (!matches)\r\n throw \"Espressione Access Control non valida: \" + expression + \". Assicurarsi che sia scritta in modo corretto\";\r\n\r\n matches.forEach(t => {\r\n var splits = t.split(':');\r\n if (splits[0] == \"R\")\r\n expression = expression.replace(t.trim(), \"this.hasRole('\" + splits[1].trim() + \"')\");\r\n else if (splits[0] == \"P\")\r\n expression = expression.replace(t.trim(), \"this.hasPermission('\" + splits[1].trim() + \"')\");\r\n else\r\n expression = expression.replace(t.trim(), \"this.hasCustom('\" + splits[1].trim() + \"', '\" + splits[0].trim() + \"')\");\r\n });\r\n\r\n var ret = <boolean>eval(expression);\r\n // Cache valore\r\n this.cache[expression] = ret;\r\n return ret;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasRole(role: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Roles && this.Identity.Roles.length > 0 && this.Identity.Roles.indexOf(role) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasPermission(permission: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Permissions && this.Identity.Permissions.length > 0 && this.Identity.Permissions.indexOf(permission) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasCustom(value: string, tag: string): boolean {\r\n var items = this.taggedItemsCache.find(t => t.key == tag)?.items;\r\n if (!items)\r\n return true;\r\n else if (items.length == 0)\r\n return false;\r\n else\r\n return !!items.find(t => t == value);\r\n }\r\n\r\n /**\r\n * Entry point che controlla un'espressione identificante un permesso, ad esempio \"P:visualizzazione\" controlla che l'utente collegato abbia un permesso che si chiama \"visualizzazione\"\r\n */\r\n public has(expr: string) {\r\n return this.hasACExpression(expr);\r\n }\r\n}","//Angular\r\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from \"@angular/router\";\r\nimport { Injectable, Optional, Inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n//Libs\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\n//Models\r\nimport { ACC_LOCALE } from \"./tokens\";\r\nimport { AccessControlService } from './access-control.service';\r\n\r\n/**\r\n * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe\r\n * che la ereditavalorizzare la variabile Routes con le route permesse dal modulo e il permesso per cui si vuole riservare l'accesso. Ad esempio:\r\n * \r\n * ```typescript\r\n * @Injectable()\r\n * export class HasAuthGuardComponent extends BaseRouterGuard {\r\n * constructor(acc: AccessControlService, router: Router, ms: MessageService, ts: BaseTokenService) {\r\n * super(ms, acc, router, ts);\r\n * this.Routes = [\r\n * { route: \"page_route\", permission: \"P:perm_one\" },\r\n * { route: \"*\", permission: \"R:role_one\" }\r\n * ]\r\n * }\r\n * }\r\n * ```\r\n */\r\n@Injectable()\r\nexport class AccessControlRouteGuard implements CanActivateChild {\r\n /**\r\n * @ignore\r\n */\r\n private lc: LocalizationService;\r\n\r\n /**\r\n * Route di login che serve per reindirizzare alla pagina di login in caso di fallimento del controllo sui Permessi\r\n * \r\n * @default\r\n */\r\n protected LoginRoute : string = \"login\";\r\n\r\n /**\r\n * Permette di specificare delle Route sempre consentite, anche a livello di \"Radice\". Ad esempio la Root \"test\" permetterà\r\n * l'accesso a tutte le route che anche solo iniziano per \"test\"\r\n */\r\n protected AlwaysAllowedRoots: string[] = [];\r\n \r\n /**\r\n * Lista di Route con la loro espressione di controllo per valutare i permessi\r\n */\r\n protected Routes: { route: any; permission: string; }[] = [];\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(private msgService : MessageService, private ac: AccessControlService, private router: Router, @Optional() @Inject(ACC_LOCALE) LOCALE: string) {\r\n this.lc = new LocalizationService(LOCALE ?? 'it-IT');\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n canActivateChild(route: ActivatedRouteSnapshot, _: RouterStateSnapshot): Promise<boolean> {\r\n var url = route.url.join('/');\r\n //Se l'applicazione non è pronta e non sto navigando nelle pagine consentite\r\n if (!this.ac.Initialized && !this.AlwaysAllowedRoots.find(r => url.indexOf(r) != -1))\r\n return Promise.resolve(false);\r\n \r\n var routeMatched: boolean = false;\r\n for (let i = 0; i < this.Routes.length; i++) {\r\n let r = this.Routes[i];\r\n //Se faccio match con la route significa che ho navigato in una delle route conosciute, altrimenti avverto ma lascio andare\r\n if (url.indexOf(r.route) != -1) {\r\n routeMatched = true;\r\n return this.handleMatch(url, r);\r\n }\r\n }\r\n //Se non faccio nessun match ma ho una route wildcard (*) prendo quella e controllo su quella\r\n if (!routeMatched) {\r\n var wildcardRoute = this.Routes.find(r => r.route == \"*\");\r\n if (wildcardRoute)\r\n return this.handleMatch(url, wildcardRoute);\r\n else\r\n console.log(\"Navigaizone avvenuta su route sconosciuta: \" + url);\r\n }\r\n return Promise.resolve(true);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private handleMatch(fromurl: string, r: any) {\r\n let identity = this.ac.Identity;\r\n\r\n if (this.ac.has(r.permission) ||\r\n (\r\n // Considero anche la possibilità di avere l'access control inizializzato ma che l'account scope non sia ancora presente\r\n // in questo caso suppongo sia un hard refresh e mi fido del fatto che l'utente possa entrarci\r\n // TODO: Fixare meglio concatenando una promise che va a prendere l'account scope se serve\r\n this.ac.Initialized &&\r\n (!identity.Roles || identity.Roles.length == 0) &&\r\n (!identity.Permissions || identity.Permissions.length == 0)\r\n ))\r\n return Promise.resolve(true);\r\n else {\r\n //Se sono nel sito originale (non ho aperto un newtab) blocco la navigazione\r\n //Se ho aperto una nuova tab invece rispedisco al login\r\n if (window.history.length > 2 && this.ac.isLoggedIn()) {\r\n this.msgService.simpleError(this.lc.loc(\"You don't have the required permissions to view this page. The navigation has been blocked\"));\r\n return Promise.resolve(false);\r\n }\r\n else {\r\n this.onRedirectInProgress();\r\n this.router.navigate([this.LoginRoute, { fromUrl: fromurl }]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback che viene eseguito prima che la Guard reindirizzi al login\r\n */\r\n protected onRedirectInProgress() {\r\n }\r\n}","// Angular\r\nimport { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\n\r\n/**\r\n * Direttiva che permette di gestire il controllo accessi su componenti HTML. \r\n * \r\n * Per gli esempi di utilizzo fare riferimento al README.\r\n */\r\n@Directive({\r\n selector: '[ac]',\r\n})\r\nexport class AccessControlDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef, private _ac: AccessControlService) { }\r\n\r\n /**\r\n * Input autoreferenziale per la direttiva\r\n * \r\n * @param {string} expression espressione da processare scritta come {Chiave}:{Valore}\r\n * \r\n * Le {Chiave} disponibili sono di default \"R\" per i ruoli e \"P\" per i permessi. È possibile espanderle con le Custom Permissions\r\n */\r\n @Input() set ac(expression: string) {\r\n var allow = this._ac.has(expression);\r\n\r\n //Se ho i permessi, proseguo creando la vista nel DOM, altrimenti rimuovo il template\r\n\r\n if (allow) this.viewContainer.createEmbeddedView(this.templateRef);\r\n else this.viewContainer.clear();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Token da iniettare per ogni singolo componente per cui si vuole disattivare/attivare massivamente degli input in maniera contestuale\r\n */\r\n@Injectable()\r\nexport class ComponentContext{\r\n /**\r\n * Nome del Contesto assegnato al Componente\r\n */\r\n name : string;\r\n}","// Angular\r\nimport { Directive, ElementRef, Optional, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\nimport { ACC_CUSTOMKEY } from \"./tokens\"\r\n\r\n// Classi\r\nimport { ComponentContext } from \"./models/ComponentContext\";\r\n\r\n/**\r\n * Direttiva che permette di capire se l'elemento HTML su cui è utilizzata dev'essere disabilitato o no.\r\n * \r\n * Non ha effetto sugli elementi dichiarati in componenti che non dichiarano alcun ComponentContext\r\n */\r\n@Directive({\r\n selector: '[contextAware]',\r\n})\r\nexport class ContextAwareDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(element: ElementRef, @Optional() private context: ComponentContext, private ac: AccessControlService, @Optional() @Inject(ACC_CUSTOMKEY) private ACC_CUSTOMKEY: string) {\r\n var allow = !this.context || !this.context.name || !this.ACC_CUSTOMKEY || this.ac.has(this.ACC_CUSTOMKEY + \":\" + this.context.name,);\r\n\r\n if (!allow)\r\n element.nativeElement.setAttribute(\"enabled\", \"true\");\r\n }\r\n}","import { LocalizationModule } from '@esfaenza/localizations';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { ACC_LOCALE, ACC_CUSTOMKEY} from './tokens';\r\n\r\nimport { AccessControlModuleConfig } from './models/AccessControlModuleConfig';\r\nimport { AccessControlService } from './access-control.service';\r\nimport { AccessControlRouteGuard } from './AccessControlRouteGuard';\r\nimport { AccessControlDirective } from './access-control.directive';\r\nimport { ContextAwareDirective } from './context-aware.directive';\r\n\r\n@NgModule({\r\n imports: [LocalizationModule],\r\n declarations: [AccessControlDirective, ContextAwareDirective],\r\n exports:[AccessControlDirective, ContextAwareDirective]\r\n})\r\nexport class AccessControlModule {\r\n static forRoot(config?: AccessControlModuleConfig): ModuleWithProviders<AccessControlModule> {\r\n return {\r\n ngModule: AccessControlModule,\r\n providers: [\r\n AccessControlService,\r\n AccessControlRouteGuard,\r\n { provide: ACC_LOCALE, useValue: config?.locale || 'it-IT' },\r\n { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null }\r\n ]\r\n };\r\n }\r\n}","/**\r\n * Configurazione Modulo AccessControl. Se non fornita verrà generata automaticamente con locale 'it-IT'\r\n */\r\nexport class AccessControlModuleConfig {\r\n\r\n /**\r\n * locale dell'applicazione in forma standard, ad esempio \"it-IT\", \"en-US\", etc...\r\n * \r\n * Attualmente si supportano solo le lingue Italiano e Inglese\r\n */\r\n locale: string;\r\n\r\n /**\r\n * Chiave custom su cui la **contextAwareDirective** si basa per controllare se l'elemento è abilitato o meno\r\n */\r\n customKey: string;\r\n}","/*\r\n * Public API Surface of access-control\r\n */\r\n\r\nexport * from './lib/access-control.module';\r\nexport * from './lib/access-control.service';\r\nexport * from './lib/access-control.directive'\r\nexport * from './lib/context-aware.directive';\r\nexport * from \"./lib/models/AccessControlModuleConfig\";\r\nexport * from \"./lib/AccessControlRouteGuard\";\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/models/ComponentContext\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-access-control.mjs","sources":["../../../projects/access-control/src/lib/tokens.ts","../../../projects/access-control/src/lib/access-control.service.ts","../../../projects/access-control/src/lib/AccessControlRouteGuard.ts","../../../projects/access-control/src/lib/access-control.directive.ts","../../../projects/access-control/src/lib/models/ComponentContext.ts","../../../projects/access-control/src/lib/context-aware.directive.ts","../../../projects/access-control/src/lib/access-control.module.ts","../../../projects/access-control/src/lib/models/AccessControlModuleConfig.ts","../../../projects/access-control/src/public-api.ts","../../../projects/access-control/src/esfaenza-access-control.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/** Token che racchiude il locale scelto per l'applicazione */\r\nexport const ACC_LOCALE: InjectionToken<string> = new InjectionToken<string>('ACC_LOCALE');\r\n\r\n/** Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext */\r\nexport const ACC_CUSTOMKEY: InjectionToken<string> = new InjectionToken<string>('ACC_CUSTOMKEY');\r\n\r\n/** Token che indica la condizione di default da aggiungere ai check utente */\r\nexport const ACC_DEF_COND: InjectionToken<string> = new InjectionToken<string>('ACC_DEF_COND');\r\n\r\n/** Token che indica l'operatore della condizione di default da aggiungere ai check utente */\r\nexport const ACC_DEF_COND_OP: InjectionToken<string> = new InjectionToken<string>('ACC_DEF_COND_OP');","// Angular\r\nimport { Inject, Injectable, Optional } from \"@angular/core\";\r\nimport { ACC_DEF_COND, ACC_DEF_COND_OP } from \"./tokens\";\r\n\r\n/**\r\n * Entrypoint di tutte le operazioni esposte dalla libreria access-control\r\n */\r\n@Injectable()\r\nexport class AccessControlService {\r\n\r\n /**\r\n * Indica se l'Identity è stata inizializzata\r\n */\r\n public Initialized: boolean = false;\r\n\r\n /**\r\n * Indica se sono state effettuate inizializzazioni di Custom Permissions\r\n */\r\n public InitializedCustom: boolean = false;\r\n\r\n /** @ignore */\r\n private cache: {} = {};\r\n\r\n /** @ignore */\r\n private taggedItemsCache: { key: string, items: string[] }[] = [];\r\n\r\n /**\r\n * Identity associata a quest'istanza del Servizio Access Control, utile se si vuole avere accesso a Ruoli e Permessi direttamente da qui, per qualsivoglia motivo\r\n */\r\n public Identity: { Roles: string[], Permissions: string[] };\r\n\r\n /** @ignore */\r\n constructor(@Optional() @Inject(ACC_DEF_COND) private ACC_DEF_COND: string, @Optional() @Inject(ACC_DEF_COND_OP) private ACC_DEF_COND_OP: string,) { }\r\n\r\n /**\r\n * Inizializza l'Identity del servizio con il modello specificato\r\n * \r\n * @params {{ Roles: string[], Permissions: string[] }} identity Identità applicativa con ruoli e permessi\r\n */\r\n public initializeIdentity(identity: { Roles: string[], Permissions: string[] }) {\r\n this.Identity = identity;\r\n this.Initialized = true;\r\n }\r\n\r\n /**\r\n * Inizializza i permessi Custom del servizio con il modello specificato\r\n * \r\n * @param {{ key: string, items: string[] }[]} customPermissions Permessi Custom\r\n */\r\n public initializeCustomPermissions(customPermissions: { key: string, items: string[] }[]) {\r\n this.taggedItemsCache = customPermissions;\r\n this.InitializedCustom = true;\r\n }\r\n\r\n /**\r\n * Indica se nella sessione attuale esiste un utente loggato. Fa un semplice controllo di presenza sull'Identity\r\n */\r\n public isLoggedIn() {\r\n return !!this.Identity;\r\n }\r\n\r\n /**\r\n * Expression è scritta tipo --> R:Role1 && P:Permission1 || (R:Role2 && P:Permission1)\r\n * Quindi piuttosto che implementarsi un parser della madonna in stile Alessandro prendo la strada stronza e veloce con l'eval :P\r\n * \r\n * @ignore\r\n */\r\n private hasACExpression(expression: string): boolean {\r\n if (!this.Initialized)\r\n console.error(\"Access Control System has not been initialized. Call this.accessControl.initialize(..., ...) before using the service\");\r\n\r\n if (!expression)\r\n return true;\r\n\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n\r\n if(this.ACC_DEF_COND && this.ACC_DEF_COND_OP)\r\n expression = `(${expression}) ${this.ACC_DEF_COND_OP} ${this.ACC_DEF_COND}`;\r\n \r\n //Espressione già valutata, non serve rivalutarla\r\n if (this.cache[expression])\r\n return this.cache[expression];\r\n\r\n var RolesPermissionsRegexp = /.:[^|&()]+/g;\r\n\r\n var matches = expression.match(RolesPermissionsRegexp);\r\n \r\n if (!matches)\r\n throw \"Espressione Access Control non valida: \" + expression + \". Assicurarsi che sia scritta in modo corretto\";\r\n\r\n matches.forEach(t => {\r\n var splits = t.split(':');\r\n if (splits[0] == \"R\")\r\n expression = expression.replace(t.trim(), \"this.hasRole('\" + splits[1].trim() + \"')\");\r\n else if (splits[0] == \"P\")\r\n expression = expression.replace(t.trim(), \"this.hasPermission('\" + splits[1].trim() + \"')\");\r\n else\r\n expression = expression.replace(t.trim(), \"this.hasCustom('\" + splits[1].trim() + \"', '\" + splits[0].trim() + \"')\");\r\n });\r\n\r\n var ret = <boolean>eval(expression);\r\n // Cache valore\r\n this.cache[expression] = ret;\r\n return ret;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasRole(role: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Roles && this.Identity.Roles.length > 0 && this.Identity.Roles.indexOf(role) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasPermission(permission: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Permissions && this.Identity.Permissions.length > 0 && this.Identity.Permissions.indexOf(permission) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasCustom(value: string, tag: string): boolean {\r\n var items = this.taggedItemsCache.find(t => t.key == tag)?.items;\r\n if (!items)\r\n return true;\r\n else if (items.length == 0)\r\n return false;\r\n else\r\n return !!items.find(t => t == value);\r\n }\r\n\r\n /**\r\n * Entry point che controlla un'espressione identificante un permesso, ad esempio \"P:visualizzazione\" controlla che l'utente collegato abbia un permesso che si chiama \"visualizzazione\"\r\n */\r\n public has(expr: string) {\r\n return this.hasACExpression(expr);\r\n }\r\n}","//Angular\r\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from \"@angular/router\";\r\nimport { Injectable, Optional, Inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n//Libs\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\n//Models\r\nimport { ACC_LOCALE } from \"./tokens\";\r\nimport { AccessControlService } from './access-control.service';\r\n\r\n/**\r\n * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe\r\n * che la ereditavalorizzare la variabile Routes con le route permesse dal modulo e il permesso per cui si vuole riservare l'accesso. Ad esempio:\r\n * \r\n * ```typescript\r\n * @Injectable()\r\n * export class HasAuthGuardComponent extends BaseRouterGuard {\r\n * constructor(acc: AccessControlService, router: Router, ms: MessageService, ts: BaseTokenService) {\r\n * super(ms, acc, router, ts);\r\n * this.Routes = [\r\n * { route: \"page_route\", permission: \"P:perm_one\" },\r\n * { route: \"*\", permission: \"R:role_one\" }\r\n * ]\r\n * }\r\n * }\r\n * ```\r\n */\r\n@Injectable()\r\nexport class AccessControlRouteGuard implements CanActivateChild {\r\n /**\r\n * @ignore\r\n */\r\n private lc: LocalizationService;\r\n\r\n /**\r\n * Route di login che serve per reindirizzare alla pagina di login in caso di fallimento del controllo sui Permessi\r\n * \r\n * @default\r\n */\r\n protected LoginRoute : string = \"login\";\r\n\r\n /**\r\n * Permette di specificare delle Route sempre consentite, anche a livello di \"Radice\". Ad esempio la Root \"test\" permetterà\r\n * l'accesso a tutte le route che anche solo iniziano per \"test\"\r\n */\r\n protected AlwaysAllowedRoots: string[] = [];\r\n \r\n /**\r\n * Lista di Route con la loro espressione di controllo per valutare i permessi\r\n */\r\n protected Routes: { route: any; permission: string; }[] = [];\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(private msgService : MessageService, private ac: AccessControlService, private router: Router, @Optional() @Inject(ACC_LOCALE) LOCALE: string) {\r\n this.lc = new LocalizationService(LOCALE ?? 'it-IT');\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n canActivateChild(route: ActivatedRouteSnapshot, _: RouterStateSnapshot): Promise<boolean> {\r\n var url = route.url.join('/');\r\n //Se l'applicazione non è pronta e non sto navigando nelle pagine consentite\r\n if (!this.ac.Initialized && !this.AlwaysAllowedRoots.find(r => url.indexOf(r) != -1))\r\n return Promise.resolve(false);\r\n \r\n var routeMatched: boolean = false;\r\n for (let i = 0; i < this.Routes.length; i++) {\r\n let r = this.Routes[i];\r\n //Se faccio match con la route significa che ho navigato in una delle route conosciute, altrimenti avverto ma lascio andare\r\n if (url.indexOf(r.route) != -1) {\r\n routeMatched = true;\r\n return this.handleMatch(url, r);\r\n }\r\n }\r\n //Se non faccio nessun match ma ho una route wildcard (*) prendo quella e controllo su quella\r\n if (!routeMatched) {\r\n var wildcardRoute = this.Routes.find(r => r.route == \"*\");\r\n if (wildcardRoute)\r\n return this.handleMatch(url, wildcardRoute);\r\n else\r\n console.log(\"Navigaizone avvenuta su route sconosciuta: \" + url);\r\n }\r\n return Promise.resolve(true);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private handleMatch(fromurl: string, r: any) {\r\n let identity = this.ac.Identity;\r\n\r\n if (this.ac.has(r.permission) ||\r\n (\r\n // Considero anche la possibilità di avere l'access control inizializzato ma che l'account scope non sia ancora presente\r\n // in questo caso suppongo sia un hard refresh e mi fido del fatto che l'utente possa entrarci\r\n // TODO: Fixare meglio concatenando una promise che va a prendere l'account scope se serve\r\n this.ac.Initialized &&\r\n (!identity.Roles || identity.Roles.length == 0) &&\r\n (!identity.Permissions || identity.Permissions.length == 0)\r\n ))\r\n return Promise.resolve(true);\r\n else {\r\n //Se sono nel sito originale (non ho aperto un newtab) blocco la navigazione\r\n //Se ho aperto una nuova tab invece rispedisco al login\r\n if (window.history.length > 2 && this.ac.isLoggedIn()) {\r\n this.msgService.simpleError(this.lc.loc(\"You don't have the required permissions to view this page. The navigation has been blocked\"));\r\n return Promise.resolve(false);\r\n }\r\n else {\r\n this.onRedirectInProgress();\r\n this.router.navigate([this.LoginRoute, { fromUrl: fromurl }]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback che viene eseguito prima che la Guard reindirizzi al login\r\n */\r\n protected onRedirectInProgress() {\r\n }\r\n}","// Angular\r\nimport { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\n\r\n/**\r\n * Direttiva che permette di gestire il controllo accessi su componenti HTML. \r\n * \r\n * Per gli esempi di utilizzo fare riferimento al README.\r\n */\r\n@Directive({\r\n selector: '[ac]',\r\n})\r\nexport class AccessControlDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef, private _ac: AccessControlService) { }\r\n\r\n /**\r\n * Input autoreferenziale per la direttiva\r\n * \r\n * @param {string} expression espressione da processare scritta come {Chiave}:{Valore}\r\n * \r\n * Le {Chiave} disponibili sono di default \"R\" per i ruoli e \"P\" per i permessi. È possibile espanderle con le Custom Permissions\r\n */\r\n @Input() set ac(expression: string) {\r\n var allow = this._ac.has(expression);\r\n\r\n //Se ho i permessi, proseguo creando la vista nel DOM, altrimenti rimuovo il template\r\n\r\n if (allow) this.viewContainer.createEmbeddedView(this.templateRef);\r\n else this.viewContainer.clear();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Token da iniettare per ogni singolo componente per cui si vuole disattivare/attivare massivamente degli input in maniera contestuale\r\n */\r\n@Injectable()\r\nexport class ComponentContext{\r\n /**\r\n * Nome del Contesto assegnato al Componente\r\n */\r\n name : string;\r\n}","// Angular\r\nimport { Directive, ElementRef, Optional, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\nimport { ACC_CUSTOMKEY } from \"./tokens\"\r\n\r\n// Classi\r\nimport { ComponentContext } from \"./models/ComponentContext\";\r\n\r\n/**\r\n * Direttiva che permette di capire se l'elemento HTML su cui è utilizzata dev'essere disabilitato o no.\r\n * \r\n * Non ha effetto sugli elementi dichiarati in componenti che non dichiarano alcun ComponentContext\r\n */\r\n@Directive({\r\n selector: '[contextAware]',\r\n})\r\nexport class ContextAwareDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(element: ElementRef, @Optional() private context: ComponentContext, private ac: AccessControlService, @Optional() @Inject(ACC_CUSTOMKEY) private ACC_CUSTOMKEY: string) {\r\n var allow = !this.context || !this.context.name || !this.ACC_CUSTOMKEY || this.ac.has(this.ACC_CUSTOMKEY + \":\" + this.context.name,);\r\n\r\n if (!allow)\r\n element.nativeElement.setAttribute(\"enabled\", \"true\");\r\n }\r\n}","import { LocalizationModule } from '@esfaenza/localizations';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { ACC_LOCALE, ACC_CUSTOMKEY, ACC_DEF_COND, ACC_DEF_COND_OP } from './tokens';\r\n\r\nimport { AccessControlModuleConfig } from './models/AccessControlModuleConfig';\r\nimport { AccessControlService } from './access-control.service';\r\nimport { AccessControlRouteGuard } from './AccessControlRouteGuard';\r\nimport { AccessControlDirective } from './access-control.directive';\r\nimport { ContextAwareDirective } from './context-aware.directive';\r\n\r\n@NgModule({\r\n imports: [LocalizationModule],\r\n declarations: [AccessControlDirective, ContextAwareDirective],\r\n exports:[AccessControlDirective, ContextAwareDirective]\r\n})\r\nexport class AccessControlModule {\r\n static forRoot(config?: AccessControlModuleConfig): ModuleWithProviders<AccessControlModule> {\r\n return {\r\n ngModule: AccessControlModule,\r\n providers: [\r\n AccessControlService,\r\n AccessControlRouteGuard,\r\n { provide: ACC_LOCALE, useValue: config?.locale || 'it-IT' },\r\n { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null },\r\n { provide: ACC_DEF_COND, useValue: config?.defaultCondition || null },\r\n { provide: ACC_DEF_COND_OP, useValue: config?.defaultConditionLogicalOperator || '||' }\r\n ]\r\n };\r\n }\r\n}","/**\r\n * Configurazione Modulo AccessControl. Se non fornita verrà generata automaticamente con locale 'it-IT'\r\n */\r\nexport class AccessControlModuleConfig {\r\n\r\n /**\r\n * locale dell'applicazione in forma standard, ad esempio \"it-IT\", \"en-US\", etc...\r\n * \r\n * Attualmente si supportano solo le lingue Italiano e Inglese\r\n */\r\n locale: string;\r\n\r\n /** Chiave custom su cui la **contextAwareDirective** si basa per controllare se l'elemento è abilitato o meno */\r\n customKey: string;\r\n\r\n /** Condizione di default da aggiungere a ogni condizione utente. Es: 'R:Jace Admin' */\r\n defaultCondition?: string;\r\n\r\n /** Relazione logica fra la condizione di default e la condizione utente. Es: '||'. Di default viene utilizzato l'OR logico */\r\n defaultConditionLogicalOperator?: string;\r\n}","/*\r\n * Public API Surface of access-control\r\n */\r\n\r\nexport * from './lib/access-control.module';\r\nexport * from './lib/access-control.service';\r\nexport * from './lib/access-control.directive'\r\nexport * from './lib/context-aware.directive';\r\nexport * from \"./lib/models/AccessControlModuleConfig\";\r\nexport * from \"./lib/AccessControlRouteGuard\";\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/models/ComponentContext\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccessControlService"],"mappings":"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"}
@@ -4,14 +4,14 @@ import { InjectionToken, Injectable, Optional, Inject, Directive, Input, NgModul
4
4
  import * as i1 from '@esfaenza/extensions';
5
5
  import * as i3 from '@angular/router';
6
6
 
7
- /**
8
- * Token che racchiude il locale scelto per l'applicazione
9
- */
7
+ /** Token che racchiude il locale scelto per l'applicazione */
10
8
  const ACC_LOCALE = new InjectionToken('ACC_LOCALE');
11
- /**
12
- * Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext
13
- */
14
- const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
9
+ /** Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext */
10
+ const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
11
+ /** Token che indica la condizione di default da aggiungere ai check utente */
12
+ const ACC_DEF_COND = new InjectionToken('ACC_DEF_COND');
13
+ /** Token che indica l'operatore della condizione di default da aggiungere ai check utente */
14
+ const ACC_DEF_COND_OP = new InjectionToken('ACC_DEF_COND_OP');
15
15
 
16
16
  // Angular
17
17
  /**
@@ -19,7 +19,9 @@ const ACC_CUSTOMKEY = new InjectionToken('ACC_CUSTOMKEY');
19
19
  */
20
20
  class AccessControlService {
21
21
  /** @ignore */
22
- constructor() {
22
+ constructor(ACC_DEF_COND, ACC_DEF_COND_OP) {
23
+ this.ACC_DEF_COND = ACC_DEF_COND;
24
+ this.ACC_DEF_COND_OP = ACC_DEF_COND_OP;
23
25
  /**
24
26
  * Indica se l'Identity è stata inizializzata
25
27
  */
@@ -72,6 +74,8 @@ class AccessControlService {
72
74
  console.warn("Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default");
73
75
  return true;
74
76
  }
77
+ if (this.ACC_DEF_COND && this.ACC_DEF_COND_OP)
78
+ expression = `(${expression}) ${this.ACC_DEF_COND_OP} ${this.ACC_DEF_COND}`;
75
79
  //Espressione già valutata, non serve rivalutarla
76
80
  if (this.cache[expression])
77
81
  return this.cache[expression];
@@ -138,11 +142,21 @@ class AccessControlService {
138
142
  return this.hasACExpression(expr);
139
143
  }
140
144
  }
141
- AccessControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
142
- AccessControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService });
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlService, decorators: [{
145
+ AccessControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService, deps: [{ token: ACC_DEF_COND, optional: true }, { token: ACC_DEF_COND_OP, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
146
+ AccessControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService });
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlService, decorators: [{
144
148
  type: Injectable
145
- }], ctorParameters: function () { return []; } });
149
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
150
+ type: Optional
151
+ }, {
152
+ type: Inject,
153
+ args: [ACC_DEF_COND]
154
+ }] }, { type: undefined, decorators: [{
155
+ type: Optional
156
+ }, {
157
+ type: Inject,
158
+ args: [ACC_DEF_COND_OP]
159
+ }] }]; } });
146
160
 
147
161
  /**
148
162
  * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe
@@ -246,9 +260,9 @@ class AccessControlRouteGuard {
246
260
  onRedirectInProgress() {
247
261
  }
248
262
  }
249
- AccessControlRouteGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard, deps: [{ token: i1.MessageService }, { token: AccessControlService }, { token: i3.Router }, { token: ACC_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
250
- AccessControlRouteGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard });
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlRouteGuard, decorators: [{
263
+ AccessControlRouteGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard, deps: [{ token: i1.MessageService }, { token: AccessControlService }, { token: i3.Router }, { token: ACC_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
264
+ AccessControlRouteGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard });
265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlRouteGuard, decorators: [{
252
266
  type: Injectable
253
267
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: AccessControlService }, { type: i3.Router }, { type: undefined, decorators: [{
254
268
  type: Optional
@@ -290,9 +304,9 @@ class AccessControlDirective {
290
304
  this.viewContainer.clear();
291
305
  }
292
306
  }
293
- AccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
294
- AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac" }, ngImport: i0 });
295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlDirective, decorators: [{
307
+ AccessControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
308
+ AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac" }, ngImport: i0 });
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlDirective, decorators: [{
296
310
  type: Directive,
297
311
  args: [{
298
312
  selector: '[ac]',
@@ -306,9 +320,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
306
320
  */
307
321
  class ComponentContext {
308
322
  }
309
- ComponentContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
310
- ComponentContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext });
311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ComponentContext, decorators: [{
323
+ ComponentContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
324
+ ComponentContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext });
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ComponentContext, decorators: [{
312
326
  type: Injectable
313
327
  }] });
314
328
 
@@ -333,9 +347,9 @@ class ContextAwareDirective {
333
347
  element.nativeElement.setAttribute("enabled", "true");
334
348
  }
335
349
  }
336
- ContextAwareDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ContextAwareDirective, deps: [{ token: i0.ElementRef }, { token: ComponentContext, optional: true }, { token: AccessControlService }, { token: ACC_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
337
- ContextAwareDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: ContextAwareDirective, selector: "[contextAware]", ngImport: i0 });
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ContextAwareDirective, decorators: [{
350
+ ContextAwareDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ContextAwareDirective, deps: [{ token: i0.ElementRef }, { token: ComponentContext, optional: true }, { token: AccessControlService }, { token: ACC_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
351
+ ContextAwareDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ContextAwareDirective, selector: "[contextAware]", ngImport: i0 });
352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ContextAwareDirective, decorators: [{
339
353
  type: Directive,
340
354
  args: [{
341
355
  selector: '[contextAware]',
@@ -357,15 +371,17 @@ class AccessControlModule {
357
371
  AccessControlService,
358
372
  AccessControlRouteGuard,
359
373
  { provide: ACC_LOCALE, useValue: config?.locale || 'it-IT' },
360
- { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null }
374
+ { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null },
375
+ { provide: ACC_DEF_COND, useValue: config?.defaultCondition || null },
376
+ { provide: ACC_DEF_COND_OP, useValue: config?.defaultConditionLogicalOperator || '||' }
361
377
  ]
362
378
  };
363
379
  }
364
380
  }
365
- AccessControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
366
- AccessControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective], imports: [LocalizationModule], exports: [AccessControlDirective, ContextAwareDirective] });
367
- AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, imports: [[LocalizationModule]] });
368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AccessControlModule, decorators: [{
381
+ AccessControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
382
+ AccessControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective], imports: [LocalizationModule], exports: [AccessControlDirective, ContextAwareDirective] });
383
+ AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, imports: [LocalizationModule] });
384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AccessControlModule, decorators: [{
369
385
  type: NgModule,
370
386
  args: [{
371
387
  imports: [LocalizationModule],
@@ -388,5 +404,5 @@ class AccessControlModuleConfig {
388
404
  * Generated bundle index. Do not edit.
389
405
  */
390
406
 
391
- export { ACC_CUSTOMKEY, ACC_LOCALE, AccessControlDirective, AccessControlModule, AccessControlModuleConfig, AccessControlRouteGuard, AccessControlService, ComponentContext, ContextAwareDirective };
407
+ export { ACC_CUSTOMKEY, ACC_DEF_COND, ACC_DEF_COND_OP, ACC_LOCALE, AccessControlDirective, AccessControlModule, AccessControlModuleConfig, AccessControlRouteGuard, AccessControlService, ComponentContext, ContextAwareDirective };
392
408
  //# sourceMappingURL=esfaenza-access-control.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-access-control.mjs","sources":["../../../projects/access-control/src/lib/tokens.ts","../../../projects/access-control/src/lib/access-control.service.ts","../../../projects/access-control/src/lib/AccessControlRouteGuard.ts","../../../projects/access-control/src/lib/access-control.directive.ts","../../../projects/access-control/src/lib/models/ComponentContext.ts","../../../projects/access-control/src/lib/context-aware.directive.ts","../../../projects/access-control/src/lib/access-control.module.ts","../../../projects/access-control/src/lib/models/AccessControlModuleConfig.ts","../../../projects/access-control/src/public-api.ts","../../../projects/access-control/src/esfaenza-access-control.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Token che racchiude il locale scelto per l'applicazione\r\n */\r\nexport const ACC_LOCALE: InjectionToken<string> = new InjectionToken<string>('ACC_LOCALE');\r\n\r\n/**\r\n * Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext\r\n */\r\nexport const ACC_CUSTOMKEY: InjectionToken<string> = new InjectionToken<string>('ACC_CUSTOMKEY');","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n/**\r\n * Entrypoint di tutte le operazioni esposte dalla libreria access-control\r\n */\r\n@Injectable()\r\nexport class AccessControlService {\r\n\r\n /**\r\n * Indica se l'Identity è stata inizializzata\r\n */\r\n public Initialized: boolean = false;\r\n\r\n /**\r\n * Indica se sono state effettuate inizializzazioni di Custom Permissions\r\n */\r\n public InitializedCustom: boolean = false;\r\n\r\n /** @ignore */\r\n private cache: {} = {};\r\n\r\n /** @ignore */\r\n private taggedItemsCache: { key: string, items: string[] }[] = [];\r\n\r\n /**\r\n * Identity associata a quest'istanza del Servizio Access Control, utile se si vuole avere accesso a Ruoli e Permessi direttamente da qui, per qualsivoglia motivo\r\n */\r\n public Identity: { Roles: string[], Permissions: string[] };\r\n\r\n /** @ignore */\r\n constructor() { }\r\n\r\n /**\r\n * Inizializza l'Identity del servizio con il modello specificato\r\n * \r\n * @params {{ Roles: string[], Permissions: string[] }} identity Identità applicativa con ruoli e permessi\r\n */\r\n public initializeIdentity(identity: { Roles: string[], Permissions: string[] }) {\r\n this.Identity = identity;\r\n this.Initialized = true;\r\n }\r\n\r\n /**\r\n * Inizializza i permessi Custom del servizio con il modello specificato\r\n * \r\n * @param {{ key: string, items: string[] }[]} customPermissions Permessi Custom\r\n */\r\n public initializeCustomPermissions(customPermissions: { key: string, items: string[] }[]) {\r\n this.taggedItemsCache = customPermissions;\r\n this.InitializedCustom = true;\r\n }\r\n\r\n /**\r\n * Indica se nella sessione attuale esiste un utente loggato. Fa un semplice controllo di presenza sull'Identity\r\n */\r\n public isLoggedIn() {\r\n return !!this.Identity;\r\n }\r\n\r\n /**\r\n * Expression è scritta tipo --> R:Role1 && P:Permission1 || (R:Role2 && P:Permission1)\r\n * Quindi piuttosto che implementarsi un parser della madonna in stile Alessandro prendo la strada stronza e veloce con l'eval :P\r\n * \r\n * @ignore\r\n */\r\n private hasACExpression(expression: string): boolean {\r\n if (!this.Initialized)\r\n console.error(\"Access Control System has not been initialized. Call this.accessControl.initialize(..., ...) before using the service\");\r\n\r\n if (!expression)\r\n return true;\r\n\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n\r\n //Espressione già valutata, non serve rivalutarla\r\n if (this.cache[expression])\r\n return this.cache[expression];\r\n\r\n var RolesPermissionsRegexp = /.:[^|&()]+/g;\r\n\r\n var matches = expression.match(RolesPermissionsRegexp);\r\n \r\n if (!matches)\r\n throw \"Espressione Access Control non valida: \" + expression + \". Assicurarsi che sia scritta in modo corretto\";\r\n\r\n matches.forEach(t => {\r\n var splits = t.split(':');\r\n if (splits[0] == \"R\")\r\n expression = expression.replace(t.trim(), \"this.hasRole('\" + splits[1].trim() + \"')\");\r\n else if (splits[0] == \"P\")\r\n expression = expression.replace(t.trim(), \"this.hasPermission('\" + splits[1].trim() + \"')\");\r\n else\r\n expression = expression.replace(t.trim(), \"this.hasCustom('\" + splits[1].trim() + \"', '\" + splits[0].trim() + \"')\");\r\n });\r\n\r\n var ret = <boolean>eval(expression);\r\n // Cache valore\r\n this.cache[expression] = ret;\r\n return ret;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasRole(role: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Roles && this.Identity.Roles.length > 0 && this.Identity.Roles.indexOf(role) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasPermission(permission: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Permissions && this.Identity.Permissions.length > 0 && this.Identity.Permissions.indexOf(permission) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasCustom(value: string, tag: string): boolean {\r\n var items = this.taggedItemsCache.find(t => t.key == tag)?.items;\r\n if (!items)\r\n return true;\r\n else if (items.length == 0)\r\n return false;\r\n else\r\n return !!items.find(t => t == value);\r\n }\r\n\r\n /**\r\n * Entry point che controlla un'espressione identificante un permesso, ad esempio \"P:visualizzazione\" controlla che l'utente collegato abbia un permesso che si chiama \"visualizzazione\"\r\n */\r\n public has(expr: string) {\r\n return this.hasACExpression(expr);\r\n }\r\n}","//Angular\r\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from \"@angular/router\";\r\nimport { Injectable, Optional, Inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n//Libs\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\n//Models\r\nimport { ACC_LOCALE } from \"./tokens\";\r\nimport { AccessControlService } from './access-control.service';\r\n\r\n/**\r\n * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe\r\n * che la ereditavalorizzare la variabile Routes con le route permesse dal modulo e il permesso per cui si vuole riservare l'accesso. Ad esempio:\r\n * \r\n * ```typescript\r\n * @Injectable()\r\n * export class HasAuthGuardComponent extends BaseRouterGuard {\r\n * constructor(acc: AccessControlService, router: Router, ms: MessageService, ts: BaseTokenService) {\r\n * super(ms, acc, router, ts);\r\n * this.Routes = [\r\n * { route: \"page_route\", permission: \"P:perm_one\" },\r\n * { route: \"*\", permission: \"R:role_one\" }\r\n * ]\r\n * }\r\n * }\r\n * ```\r\n */\r\n@Injectable()\r\nexport class AccessControlRouteGuard implements CanActivateChild {\r\n /**\r\n * @ignore\r\n */\r\n private lc: LocalizationService;\r\n\r\n /**\r\n * Route di login che serve per reindirizzare alla pagina di login in caso di fallimento del controllo sui Permessi\r\n * \r\n * @default\r\n */\r\n protected LoginRoute : string = \"login\";\r\n\r\n /**\r\n * Permette di specificare delle Route sempre consentite, anche a livello di \"Radice\". Ad esempio la Root \"test\" permetterà\r\n * l'accesso a tutte le route che anche solo iniziano per \"test\"\r\n */\r\n protected AlwaysAllowedRoots: string[] = [];\r\n \r\n /**\r\n * Lista di Route con la loro espressione di controllo per valutare i permessi\r\n */\r\n protected Routes: { route: any; permission: string; }[] = [];\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(private msgService : MessageService, private ac: AccessControlService, private router: Router, @Optional() @Inject(ACC_LOCALE) LOCALE: string) {\r\n this.lc = new LocalizationService(LOCALE ?? 'it-IT');\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n canActivateChild(route: ActivatedRouteSnapshot, _: RouterStateSnapshot): Promise<boolean> {\r\n var url = route.url.join('/');\r\n //Se l'applicazione non è pronta e non sto navigando nelle pagine consentite\r\n if (!this.ac.Initialized && !this.AlwaysAllowedRoots.find(r => url.indexOf(r) != -1))\r\n return Promise.resolve(false);\r\n \r\n var routeMatched: boolean = false;\r\n for (let i = 0; i < this.Routes.length; i++) {\r\n let r = this.Routes[i];\r\n //Se faccio match con la route significa che ho navigato in una delle route conosciute, altrimenti avverto ma lascio andare\r\n if (url.indexOf(r.route) != -1) {\r\n routeMatched = true;\r\n return this.handleMatch(url, r);\r\n }\r\n }\r\n //Se non faccio nessun match ma ho una route wildcard (*) prendo quella e controllo su quella\r\n if (!routeMatched) {\r\n var wildcardRoute = this.Routes.find(r => r.route == \"*\");\r\n if (wildcardRoute)\r\n return this.handleMatch(url, wildcardRoute);\r\n else\r\n console.log(\"Navigaizone avvenuta su route sconosciuta: \" + url);\r\n }\r\n return Promise.resolve(true);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private handleMatch(fromurl: string, r: any) {\r\n let identity = this.ac.Identity;\r\n\r\n if (this.ac.has(r.permission) ||\r\n (\r\n // Considero anche la possibilità di avere l'access control inizializzato ma che l'account scope non sia ancora presente\r\n // in questo caso suppongo sia un hard refresh e mi fido del fatto che l'utente possa entrarci\r\n // TODO: Fixare meglio concatenando una promise che va a prendere l'account scope se serve\r\n this.ac.Initialized &&\r\n (!identity.Roles || identity.Roles.length == 0) &&\r\n (!identity.Permissions || identity.Permissions.length == 0)\r\n ))\r\n return Promise.resolve(true);\r\n else {\r\n //Se sono nel sito originale (non ho aperto un newtab) blocco la navigazione\r\n //Se ho aperto una nuova tab invece rispedisco al login\r\n if (window.history.length > 2 && this.ac.isLoggedIn()) {\r\n this.msgService.simpleError(this.lc.loc(\"You don't have the required permissions to view this page. The navigation has been blocked\"));\r\n return Promise.resolve(false);\r\n }\r\n else {\r\n this.onRedirectInProgress();\r\n this.router.navigate([this.LoginRoute, { fromUrl: fromurl }]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback che viene eseguito prima che la Guard reindirizzi al login\r\n */\r\n protected onRedirectInProgress() {\r\n }\r\n}","// Angular\r\nimport { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\n\r\n/**\r\n * Direttiva che permette di gestire il controllo accessi su componenti HTML. \r\n * \r\n * Per gli esempi di utilizzo fare riferimento al README.\r\n */\r\n@Directive({\r\n selector: '[ac]',\r\n})\r\nexport class AccessControlDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef, private _ac: AccessControlService) { }\r\n\r\n /**\r\n * Input autoreferenziale per la direttiva\r\n * \r\n * @param {string} expression espressione da processare scritta come {Chiave}:{Valore}\r\n * \r\n * Le {Chiave} disponibili sono di default \"R\" per i ruoli e \"P\" per i permessi. È possibile espanderle con le Custom Permissions\r\n */\r\n @Input() set ac(expression: string) {\r\n var allow = this._ac.has(expression);\r\n\r\n //Se ho i permessi, proseguo creando la vista nel DOM, altrimenti rimuovo il template\r\n\r\n if (allow) this.viewContainer.createEmbeddedView(this.templateRef);\r\n else this.viewContainer.clear();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Token da iniettare per ogni singolo componente per cui si vuole disattivare/attivare massivamente degli input in maniera contestuale\r\n */\r\n@Injectable()\r\nexport class ComponentContext{\r\n /**\r\n * Nome del Contesto assegnato al Componente\r\n */\r\n name : string;\r\n}","// Angular\r\nimport { Directive, ElementRef, Optional, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\nimport { ACC_CUSTOMKEY } from \"./tokens\"\r\n\r\n// Classi\r\nimport { ComponentContext } from \"./models/ComponentContext\";\r\n\r\n/**\r\n * Direttiva che permette di capire se l'elemento HTML su cui è utilizzata dev'essere disabilitato o no.\r\n * \r\n * Non ha effetto sugli elementi dichiarati in componenti che non dichiarano alcun ComponentContext\r\n */\r\n@Directive({\r\n selector: '[contextAware]',\r\n})\r\nexport class ContextAwareDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(element: ElementRef, @Optional() private context: ComponentContext, private ac: AccessControlService, @Optional() @Inject(ACC_CUSTOMKEY) private ACC_CUSTOMKEY: string) {\r\n var allow = !this.context || !this.context.name || !this.ACC_CUSTOMKEY || this.ac.has(this.ACC_CUSTOMKEY + \":\" + this.context.name,);\r\n\r\n if (!allow)\r\n element.nativeElement.setAttribute(\"enabled\", \"true\");\r\n }\r\n}","import { LocalizationModule } from '@esfaenza/localizations';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { ACC_LOCALE, ACC_CUSTOMKEY} from './tokens';\r\n\r\nimport { AccessControlModuleConfig } from './models/AccessControlModuleConfig';\r\nimport { AccessControlService } from './access-control.service';\r\nimport { AccessControlRouteGuard } from './AccessControlRouteGuard';\r\nimport { AccessControlDirective } from './access-control.directive';\r\nimport { ContextAwareDirective } from './context-aware.directive';\r\n\r\n@NgModule({\r\n imports: [LocalizationModule],\r\n declarations: [AccessControlDirective, ContextAwareDirective],\r\n exports:[AccessControlDirective, ContextAwareDirective]\r\n})\r\nexport class AccessControlModule {\r\n static forRoot(config?: AccessControlModuleConfig): ModuleWithProviders<AccessControlModule> {\r\n return {\r\n ngModule: AccessControlModule,\r\n providers: [\r\n AccessControlService,\r\n AccessControlRouteGuard,\r\n { provide: ACC_LOCALE, useValue: config?.locale || 'it-IT' },\r\n { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null }\r\n ]\r\n };\r\n }\r\n}","/**\r\n * Configurazione Modulo AccessControl. Se non fornita verrà generata automaticamente con locale 'it-IT'\r\n */\r\nexport class AccessControlModuleConfig {\r\n\r\n /**\r\n * locale dell'applicazione in forma standard, ad esempio \"it-IT\", \"en-US\", etc...\r\n * \r\n * Attualmente si supportano solo le lingue Italiano e Inglese\r\n */\r\n locale: string;\r\n\r\n /**\r\n * Chiave custom su cui la **contextAwareDirective** si basa per controllare se l'elemento è abilitato o meno\r\n */\r\n customKey: string;\r\n}","/*\r\n * Public API Surface of access-control\r\n */\r\n\r\nexport * from './lib/access-control.module';\r\nexport * from './lib/access-control.service';\r\nexport * from './lib/access-control.directive'\r\nexport * from './lib/context-aware.directive';\r\nexport * from \"./lib/models/AccessControlModuleConfig\";\r\nexport * from \"./lib/AccessControlRouteGuard\";\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/models/ComponentContext\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-access-control.mjs","sources":["../../../projects/access-control/src/lib/tokens.ts","../../../projects/access-control/src/lib/access-control.service.ts","../../../projects/access-control/src/lib/AccessControlRouteGuard.ts","../../../projects/access-control/src/lib/access-control.directive.ts","../../../projects/access-control/src/lib/models/ComponentContext.ts","../../../projects/access-control/src/lib/context-aware.directive.ts","../../../projects/access-control/src/lib/access-control.module.ts","../../../projects/access-control/src/lib/models/AccessControlModuleConfig.ts","../../../projects/access-control/src/public-api.ts","../../../projects/access-control/src/esfaenza-access-control.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\n/** Token che racchiude il locale scelto per l'applicazione */\r\nexport const ACC_LOCALE: InjectionToken<string> = new InjectionToken<string>('ACC_LOCALE');\r\n\r\n/** Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext */\r\nexport const ACC_CUSTOMKEY: InjectionToken<string> = new InjectionToken<string>('ACC_CUSTOMKEY');\r\n\r\n/** Token che indica la condizione di default da aggiungere ai check utente */\r\nexport const ACC_DEF_COND: InjectionToken<string> = new InjectionToken<string>('ACC_DEF_COND');\r\n\r\n/** Token che indica l'operatore della condizione di default da aggiungere ai check utente */\r\nexport const ACC_DEF_COND_OP: InjectionToken<string> = new InjectionToken<string>('ACC_DEF_COND_OP');","// Angular\r\nimport { Inject, Injectable, Optional } from \"@angular/core\";\r\nimport { ACC_DEF_COND, ACC_DEF_COND_OP } from \"./tokens\";\r\n\r\n/**\r\n * Entrypoint di tutte le operazioni esposte dalla libreria access-control\r\n */\r\n@Injectable()\r\nexport class AccessControlService {\r\n\r\n /**\r\n * Indica se l'Identity è stata inizializzata\r\n */\r\n public Initialized: boolean = false;\r\n\r\n /**\r\n * Indica se sono state effettuate inizializzazioni di Custom Permissions\r\n */\r\n public InitializedCustom: boolean = false;\r\n\r\n /** @ignore */\r\n private cache: {} = {};\r\n\r\n /** @ignore */\r\n private taggedItemsCache: { key: string, items: string[] }[] = [];\r\n\r\n /**\r\n * Identity associata a quest'istanza del Servizio Access Control, utile se si vuole avere accesso a Ruoli e Permessi direttamente da qui, per qualsivoglia motivo\r\n */\r\n public Identity: { Roles: string[], Permissions: string[] };\r\n\r\n /** @ignore */\r\n constructor(@Optional() @Inject(ACC_DEF_COND) private ACC_DEF_COND: string, @Optional() @Inject(ACC_DEF_COND_OP) private ACC_DEF_COND_OP: string,) { }\r\n\r\n /**\r\n * Inizializza l'Identity del servizio con il modello specificato\r\n * \r\n * @params {{ Roles: string[], Permissions: string[] }} identity Identità applicativa con ruoli e permessi\r\n */\r\n public initializeIdentity(identity: { Roles: string[], Permissions: string[] }) {\r\n this.Identity = identity;\r\n this.Initialized = true;\r\n }\r\n\r\n /**\r\n * Inizializza i permessi Custom del servizio con il modello specificato\r\n * \r\n * @param {{ key: string, items: string[] }[]} customPermissions Permessi Custom\r\n */\r\n public initializeCustomPermissions(customPermissions: { key: string, items: string[] }[]) {\r\n this.taggedItemsCache = customPermissions;\r\n this.InitializedCustom = true;\r\n }\r\n\r\n /**\r\n * Indica se nella sessione attuale esiste un utente loggato. Fa un semplice controllo di presenza sull'Identity\r\n */\r\n public isLoggedIn() {\r\n return !!this.Identity;\r\n }\r\n\r\n /**\r\n * Expression è scritta tipo --> R:Role1 && P:Permission1 || (R:Role2 && P:Permission1)\r\n * Quindi piuttosto che implementarsi un parser della madonna in stile Alessandro prendo la strada stronza e veloce con l'eval :P\r\n * \r\n * @ignore\r\n */\r\n private hasACExpression(expression: string): boolean {\r\n if (!this.Initialized)\r\n console.error(\"Access Control System has not been initialized. Call this.accessControl.initialize(..., ...) before using the service\");\r\n\r\n if (!expression)\r\n return true;\r\n\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n\r\n if(this.ACC_DEF_COND && this.ACC_DEF_COND_OP)\r\n expression = `(${expression}) ${this.ACC_DEF_COND_OP} ${this.ACC_DEF_COND}`;\r\n \r\n //Espressione già valutata, non serve rivalutarla\r\n if (this.cache[expression])\r\n return this.cache[expression];\r\n\r\n var RolesPermissionsRegexp = /.:[^|&()]+/g;\r\n\r\n var matches = expression.match(RolesPermissionsRegexp);\r\n \r\n if (!matches)\r\n throw \"Espressione Access Control non valida: \" + expression + \". Assicurarsi che sia scritta in modo corretto\";\r\n\r\n matches.forEach(t => {\r\n var splits = t.split(':');\r\n if (splits[0] == \"R\")\r\n expression = expression.replace(t.trim(), \"this.hasRole('\" + splits[1].trim() + \"')\");\r\n else if (splits[0] == \"P\")\r\n expression = expression.replace(t.trim(), \"this.hasPermission('\" + splits[1].trim() + \"')\");\r\n else\r\n expression = expression.replace(t.trim(), \"this.hasCustom('\" + splits[1].trim() + \"', '\" + splits[0].trim() + \"')\");\r\n });\r\n\r\n var ret = <boolean>eval(expression);\r\n // Cache valore\r\n this.cache[expression] = ret;\r\n return ret;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasRole(role: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Roles && this.Identity.Roles.length > 0 && this.Identity.Roles.indexOf(role) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasPermission(permission: string): boolean {\r\n if (!this.Identity) {\r\n console.warn(\"Elemento Identity non specificato in Access Control. Gli accessi saranno tutti liberi di default\")\r\n return true;\r\n }\r\n return this.Identity.Permissions && this.Identity.Permissions.length > 0 && this.Identity.Permissions.indexOf(permission) != -1;\r\n }\r\n\r\n /**\r\n * Utilizzato da hasACExpression\r\n * \r\n * @ignore\r\n */\r\n private hasCustom(value: string, tag: string): boolean {\r\n var items = this.taggedItemsCache.find(t => t.key == tag)?.items;\r\n if (!items)\r\n return true;\r\n else if (items.length == 0)\r\n return false;\r\n else\r\n return !!items.find(t => t == value);\r\n }\r\n\r\n /**\r\n * Entry point che controlla un'espressione identificante un permesso, ad esempio \"P:visualizzazione\" controlla che l'utente collegato abbia un permesso che si chiama \"visualizzazione\"\r\n */\r\n public has(expr: string) {\r\n return this.hasACExpression(expr);\r\n }\r\n}","//Angular\r\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from \"@angular/router\";\r\nimport { Injectable, Optional, Inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n//Libs\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\n//Models\r\nimport { ACC_LOCALE } from \"./tokens\";\r\nimport { AccessControlService } from './access-control.service';\r\n\r\n/**\r\n * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe\r\n * che la ereditavalorizzare la variabile Routes con le route permesse dal modulo e il permesso per cui si vuole riservare l'accesso. Ad esempio:\r\n * \r\n * ```typescript\r\n * @Injectable()\r\n * export class HasAuthGuardComponent extends BaseRouterGuard {\r\n * constructor(acc: AccessControlService, router: Router, ms: MessageService, ts: BaseTokenService) {\r\n * super(ms, acc, router, ts);\r\n * this.Routes = [\r\n * { route: \"page_route\", permission: \"P:perm_one\" },\r\n * { route: \"*\", permission: \"R:role_one\" }\r\n * ]\r\n * }\r\n * }\r\n * ```\r\n */\r\n@Injectable()\r\nexport class AccessControlRouteGuard implements CanActivateChild {\r\n /**\r\n * @ignore\r\n */\r\n private lc: LocalizationService;\r\n\r\n /**\r\n * Route di login che serve per reindirizzare alla pagina di login in caso di fallimento del controllo sui Permessi\r\n * \r\n * @default\r\n */\r\n protected LoginRoute : string = \"login\";\r\n\r\n /**\r\n * Permette di specificare delle Route sempre consentite, anche a livello di \"Radice\". Ad esempio la Root \"test\" permetterà\r\n * l'accesso a tutte le route che anche solo iniziano per \"test\"\r\n */\r\n protected AlwaysAllowedRoots: string[] = [];\r\n \r\n /**\r\n * Lista di Route con la loro espressione di controllo per valutare i permessi\r\n */\r\n protected Routes: { route: any; permission: string; }[] = [];\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(private msgService : MessageService, private ac: AccessControlService, private router: Router, @Optional() @Inject(ACC_LOCALE) LOCALE: string) {\r\n this.lc = new LocalizationService(LOCALE ?? 'it-IT');\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n canActivateChild(route: ActivatedRouteSnapshot, _: RouterStateSnapshot): Promise<boolean> {\r\n var url = route.url.join('/');\r\n //Se l'applicazione non è pronta e non sto navigando nelle pagine consentite\r\n if (!this.ac.Initialized && !this.AlwaysAllowedRoots.find(r => url.indexOf(r) != -1))\r\n return Promise.resolve(false);\r\n \r\n var routeMatched: boolean = false;\r\n for (let i = 0; i < this.Routes.length; i++) {\r\n let r = this.Routes[i];\r\n //Se faccio match con la route significa che ho navigato in una delle route conosciute, altrimenti avverto ma lascio andare\r\n if (url.indexOf(r.route) != -1) {\r\n routeMatched = true;\r\n return this.handleMatch(url, r);\r\n }\r\n }\r\n //Se non faccio nessun match ma ho una route wildcard (*) prendo quella e controllo su quella\r\n if (!routeMatched) {\r\n var wildcardRoute = this.Routes.find(r => r.route == \"*\");\r\n if (wildcardRoute)\r\n return this.handleMatch(url, wildcardRoute);\r\n else\r\n console.log(\"Navigaizone avvenuta su route sconosciuta: \" + url);\r\n }\r\n return Promise.resolve(true);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private handleMatch(fromurl: string, r: any) {\r\n let identity = this.ac.Identity;\r\n\r\n if (this.ac.has(r.permission) ||\r\n (\r\n // Considero anche la possibilità di avere l'access control inizializzato ma che l'account scope non sia ancora presente\r\n // in questo caso suppongo sia un hard refresh e mi fido del fatto che l'utente possa entrarci\r\n // TODO: Fixare meglio concatenando una promise che va a prendere l'account scope se serve\r\n this.ac.Initialized &&\r\n (!identity.Roles || identity.Roles.length == 0) &&\r\n (!identity.Permissions || identity.Permissions.length == 0)\r\n ))\r\n return Promise.resolve(true);\r\n else {\r\n //Se sono nel sito originale (non ho aperto un newtab) blocco la navigazione\r\n //Se ho aperto una nuova tab invece rispedisco al login\r\n if (window.history.length > 2 && this.ac.isLoggedIn()) {\r\n this.msgService.simpleError(this.lc.loc(\"You don't have the required permissions to view this page. The navigation has been blocked\"));\r\n return Promise.resolve(false);\r\n }\r\n else {\r\n this.onRedirectInProgress();\r\n this.router.navigate([this.LoginRoute, { fromUrl: fromurl }]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback che viene eseguito prima che la Guard reindirizzi al login\r\n */\r\n protected onRedirectInProgress() {\r\n }\r\n}","// Angular\r\nimport { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\n\r\n/**\r\n * Direttiva che permette di gestire il controllo accessi su componenti HTML. \r\n * \r\n * Per gli esempi di utilizzo fare riferimento al README.\r\n */\r\n@Directive({\r\n selector: '[ac]',\r\n})\r\nexport class AccessControlDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef, private _ac: AccessControlService) { }\r\n\r\n /**\r\n * Input autoreferenziale per la direttiva\r\n * \r\n * @param {string} expression espressione da processare scritta come {Chiave}:{Valore}\r\n * \r\n * Le {Chiave} disponibili sono di default \"R\" per i ruoli e \"P\" per i permessi. È possibile espanderle con le Custom Permissions\r\n */\r\n @Input() set ac(expression: string) {\r\n var allow = this._ac.has(expression);\r\n\r\n //Se ho i permessi, proseguo creando la vista nel DOM, altrimenti rimuovo il template\r\n\r\n if (allow) this.viewContainer.createEmbeddedView(this.templateRef);\r\n else this.viewContainer.clear();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Token da iniettare per ogni singolo componente per cui si vuole disattivare/attivare massivamente degli input in maniera contestuale\r\n */\r\n@Injectable()\r\nexport class ComponentContext{\r\n /**\r\n * Nome del Contesto assegnato al Componente\r\n */\r\n name : string;\r\n}","// Angular\r\nimport { Directive, ElementRef, Optional, Inject } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"./access-control.service\";\r\nimport { ACC_CUSTOMKEY } from \"./tokens\"\r\n\r\n// Classi\r\nimport { ComponentContext } from \"./models/ComponentContext\";\r\n\r\n/**\r\n * Direttiva che permette di capire se l'elemento HTML su cui è utilizzata dev'essere disabilitato o no.\r\n * \r\n * Non ha effetto sugli elementi dichiarati in componenti che non dichiarano alcun ComponentContext\r\n */\r\n@Directive({\r\n selector: '[contextAware]',\r\n})\r\nexport class ContextAwareDirective {\r\n \r\n /**\r\n * Costruttore \r\n * \r\n * @ignore\r\n */\r\n constructor(element: ElementRef, @Optional() private context: ComponentContext, private ac: AccessControlService, @Optional() @Inject(ACC_CUSTOMKEY) private ACC_CUSTOMKEY: string) {\r\n var allow = !this.context || !this.context.name || !this.ACC_CUSTOMKEY || this.ac.has(this.ACC_CUSTOMKEY + \":\" + this.context.name,);\r\n\r\n if (!allow)\r\n element.nativeElement.setAttribute(\"enabled\", \"true\");\r\n }\r\n}","import { LocalizationModule } from '@esfaenza/localizations';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { ACC_LOCALE, ACC_CUSTOMKEY, ACC_DEF_COND, ACC_DEF_COND_OP } from './tokens';\r\n\r\nimport { AccessControlModuleConfig } from './models/AccessControlModuleConfig';\r\nimport { AccessControlService } from './access-control.service';\r\nimport { AccessControlRouteGuard } from './AccessControlRouteGuard';\r\nimport { AccessControlDirective } from './access-control.directive';\r\nimport { ContextAwareDirective } from './context-aware.directive';\r\n\r\n@NgModule({\r\n imports: [LocalizationModule],\r\n declarations: [AccessControlDirective, ContextAwareDirective],\r\n exports:[AccessControlDirective, ContextAwareDirective]\r\n})\r\nexport class AccessControlModule {\r\n static forRoot(config?: AccessControlModuleConfig): ModuleWithProviders<AccessControlModule> {\r\n return {\r\n ngModule: AccessControlModule,\r\n providers: [\r\n AccessControlService,\r\n AccessControlRouteGuard,\r\n { provide: ACC_LOCALE, useValue: config?.locale || 'it-IT' },\r\n { provide: ACC_CUSTOMKEY, useValue: config?.customKey || null },\r\n { provide: ACC_DEF_COND, useValue: config?.defaultCondition || null },\r\n { provide: ACC_DEF_COND_OP, useValue: config?.defaultConditionLogicalOperator || '||' }\r\n ]\r\n };\r\n }\r\n}","/**\r\n * Configurazione Modulo AccessControl. Se non fornita verrà generata automaticamente con locale 'it-IT'\r\n */\r\nexport class AccessControlModuleConfig {\r\n\r\n /**\r\n * locale dell'applicazione in forma standard, ad esempio \"it-IT\", \"en-US\", etc...\r\n * \r\n * Attualmente si supportano solo le lingue Italiano e Inglese\r\n */\r\n locale: string;\r\n\r\n /** Chiave custom su cui la **contextAwareDirective** si basa per controllare se l'elemento è abilitato o meno */\r\n customKey: string;\r\n\r\n /** Condizione di default da aggiungere a ogni condizione utente. Es: 'R:Jace Admin' */\r\n defaultCondition?: string;\r\n\r\n /** Relazione logica fra la condizione di default e la condizione utente. Es: '||'. Di default viene utilizzato l'OR logico */\r\n defaultConditionLogicalOperator?: string;\r\n}","/*\r\n * Public API Surface of access-control\r\n */\r\n\r\nexport * from './lib/access-control.module';\r\nexport * from './lib/access-control.service';\r\nexport * from './lib/access-control.directive'\r\nexport * from './lib/context-aware.directive';\r\nexport * from \"./lib/models/AccessControlModuleConfig\";\r\nexport * from \"./lib/AccessControlRouteGuard\";\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/models/ComponentContext\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccessControlService"],"mappings":"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"}
File without changes
@@ -25,5 +25,5 @@ export declare class AccessControlDirective {
25
25
  */
26
26
  set ac(expression: string);
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlDirective, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<AccessControlDirective, "[ac]", never, { "ac": "ac"; }, {}, never>;
28
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AccessControlDirective, "[ac]", never, { "ac": "ac"; }, {}, never, never, false>;
29
29
  }
@@ -3,6 +3,8 @@ import * as i0 from "@angular/core";
3
3
  * Entrypoint di tutte le operazioni esposte dalla libreria access-control
4
4
  */
5
5
  export declare class AccessControlService {
6
+ private ACC_DEF_COND;
7
+ private ACC_DEF_COND_OP;
6
8
  /**
7
9
  * Indica se l'Identity è stata inizializzata
8
10
  */
@@ -23,7 +25,7 @@ export declare class AccessControlService {
23
25
  Permissions: string[];
24
26
  };
25
27
  /** @ignore */
26
- constructor();
28
+ constructor(ACC_DEF_COND: string, ACC_DEF_COND_OP: string);
27
29
  /**
28
30
  * Inizializza l'Identity del servizio con il modello specificato
29
31
  *
@@ -75,6 +77,6 @@ export declare class AccessControlService {
75
77
  * Entry point che controlla un'espressione identificante un permesso, ad esempio "P:visualizzazione" controlla che l'utente collegato abbia un permesso che si chiama "visualizzazione"
76
78
  */
77
79
  has(expr: string): boolean;
78
- static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlService, never>;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlService, [{ optional: true; }, { optional: true; }]>;
79
81
  static ɵprov: i0.ɵɵInjectableDeclaration<AccessControlService>;
80
82
  }
@@ -18,5 +18,5 @@ export declare class ContextAwareDirective {
18
18
  */
19
19
  constructor(element: ElementRef, context: ComponentContext, ac: AccessControlService, ACC_CUSTOMKEY: string);
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ContextAwareDirective, [null, { optional: true; }, null, { optional: true; }]>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<ContextAwareDirective, "[contextAware]", never, {}, {}, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ContextAwareDirective, "[contextAware]", never, {}, {}, never, never, false>;
22
22
  }
@@ -8,8 +8,10 @@ export declare class AccessControlModuleConfig {
8
8
  * Attualmente si supportano solo le lingue Italiano e Inglese
9
9
  */
10
10
  locale: string;
11
- /**
12
- * Chiave custom su cui la **contextAwareDirective** si basa per controllare se l'elemento è abilitato o meno
13
- */
11
+ /** Chiave custom su cui la **contextAwareDirective** si basa per controllare se l'elemento è abilitato o meno */
14
12
  customKey: string;
13
+ /** Condizione di default da aggiungere a ogni condizione utente. Es: 'R:Jace Admin' */
14
+ defaultCondition?: string;
15
+ /** Relazione logica fra la condizione di default e la condizione utente. Es: '||'. Di default viene utilizzato l'OR logico */
16
+ defaultConditionLogicalOperator?: string;
15
17
  }
package/lib/tokens.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- /**
3
- * Token che racchiude il locale scelto per l'applicazione
4
- */
2
+ /** Token che racchiude il locale scelto per l'applicazione */
5
3
  export declare const ACC_LOCALE: InjectionToken<string>;
6
- /**
7
- * Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext
8
- */
4
+ /** Token che racchiude la chiave custom da controllare quando si effettuano controlli sul ComponentContext */
9
5
  export declare const ACC_CUSTOMKEY: InjectionToken<string>;
6
+ /** Token che indica la condizione di default da aggiungere ai check utente */
7
+ export declare const ACC_DEF_COND: InjectionToken<string>;
8
+ /** Token che indica l'operatore della condizione di default da aggiungere ai check utente */
9
+ export declare const ACC_DEF_COND_OP: InjectionToken<string>;
package/package.json CHANGED
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "name": "@esfaenza/access-control",
3
- "version": "13.3.2",
3
+ "version": "14.2.0",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@angular/common": "~13.3.9",
9
- "@angular/core": "~13.3.9",
10
- "@esfaenza/localizations": "^13.3.2",
11
- "@esfaenza/extensions": "^13.3.3"
8
+ "@angular/common": "~13.3.11",
9
+ "@angular/core": "~13.3.11",
10
+ "@esfaenza/localizations": "^13.3.3",
11
+ "@esfaenza/extensions": "^13.3.5"
12
12
  },
13
13
  "module": "fesm2015/esfaenza-access-control.mjs",
14
14
  "es2020": "fesm2020/esfaenza-access-control.mjs",
15
15
  "esm2020": "esm2020/esfaenza-access-control.mjs",
16
16
  "fesm2020": "fesm2020/esfaenza-access-control.mjs",
17
17
  "fesm2015": "fesm2015/esfaenza-access-control.mjs",
18
- "typings": "esfaenza-access-control.d.ts",
18
+ "typings": "index.d.ts",
19
19
  "exports": {
20
20
  "./package.json": {
21
21
  "default": "./package.json"
22
22
  },
23
23
  ".": {
24
- "types": "./esfaenza-access-control.d.ts",
24
+ "types": "./index.d.ts",
25
25
  "esm2020": "./esm2020/esfaenza-access-control.mjs",
26
26
  "es2020": "./fesm2020/esfaenza-access-control.mjs",
27
27
  "es2015": "./fesm2015/esfaenza-access-control.mjs",