@esfaenza/access-control 15.2.13 → 16.0.2

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.
Files changed (28) hide show
  1. package/{esm2020 → esm2022}/esfaenza-access-control.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/AccessControlRouteGuard.mjs +102 -102
  3. package/{esm2020 → esm2022}/lib/access-control.directive.mjs +52 -52
  4. package/{esm2020 → esm2022}/lib/access-control.module.mjs +30 -30
  5. package/{esm2020 → esm2022}/lib/access-control.pipe.mjs +31 -31
  6. package/{esm2020 → esm2022}/lib/access-control.service.mjs +197 -197
  7. package/{esm2020 → esm2022}/lib/context-aware.directive.mjs +42 -42
  8. package/{esm2020 → esm2022}/lib/models/AccessControlModuleConfig.mjs +5 -5
  9. package/{esm2020 → esm2022}/lib/models/ComponentContext.mjs +13 -13
  10. package/{esm2020 → esm2022}/lib/tokens.mjs +9 -9
  11. package/{esm2020 → esm2022}/public-api.mjs +12 -12
  12. package/{fesm2020 → fesm2022}/esfaenza-access-control.mjs +445 -445
  13. package/fesm2022/esfaenza-access-control.mjs.map +1 -0
  14. package/index.d.ts +5 -5
  15. package/lib/AccessControlRouteGuard.d.ts +60 -60
  16. package/lib/access-control.directive.d.ts +32 -32
  17. package/lib/access-control.module.d.ts +12 -12
  18. package/lib/access-control.pipe.d.ts +22 -22
  19. package/lib/access-control.service.d.ts +84 -84
  20. package/lib/context-aware.directive.d.ts +22 -22
  21. package/lib/models/AccessControlModuleConfig.d.ts +13 -13
  22. package/lib/models/ComponentContext.d.ts +12 -12
  23. package/lib/tokens.d.ts +9 -9
  24. package/package.json +8 -14
  25. package/public-api.d.ts +9 -9
  26. package/fesm2015/esfaenza-access-control.mjs +0 -478
  27. package/fesm2015/esfaenza-access-control.mjs.map +0 -1
  28. package/fesm2020/esfaenza-access-control.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNmYWVuemEtYWNjZXNzLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvZXNmYWVuemEtYWNjZXNzLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,102 +1,102 @@
1
- /**
2
- * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe
3
- * che la ereditavalorizzare la variabile Routes con le route permesse dal modulo e il permesso per cui si vuole riservare l'accesso. Ad esempio:
4
- *
5
- * ```typescript
6
- * @Injectable()
7
- * export class HasAuthGuardComponent extends BaseRouterGuard {
8
- * constructor(acc: AccessControlService, router: Router, ms: MessageService, ts: BaseTokenService) {
9
- * super(ms, acc, router, ts);
10
- * this.Routes = [
11
- * { route: "page_route", permission: "P:perm_one" },
12
- * { route: "*", permission: "R:role_one" }
13
- * ]
14
- * }
15
- * }
16
- * ```
17
- */
18
- export class AccessControlRouteGuard {
19
- /**
20
- * @ignore
21
- */
22
- constructor(msgService, ac, router) {
23
- this.msgService = msgService;
24
- this.ac = ac;
25
- this.router = router;
26
- /**
27
- * Route di login che serve per reindirizzare alla pagina di login in caso di fallimento del controllo sui Permessi
28
- *
29
- * @default
30
- */
31
- this.LoginRoute = "login";
32
- /**
33
- * Permette di specificare delle Route sempre consentite, anche a livello di "Radice". Ad esempio la Root "test" permetterà
34
- * l'accesso a tutte le route che anche solo iniziano per "test"
35
- */
36
- this.AlwaysAllowedRoots = [];
37
- /**
38
- * Lista di Route con la loro espressione di controllo per valutare i permessi
39
- */
40
- this.Routes = [];
41
- }
42
- /**
43
- * @ignore
44
- */
45
- canActivateChild(route, _) {
46
- var url = route.url.join('/');
47
- //Se l'applicazione non è pronta e non sto navigando nelle pagine consentite
48
- if (!this.ac.Initialized && !this.AlwaysAllowedRoots.find(r => url.indexOf(r) != -1))
49
- return Promise.resolve(false);
50
- var routeMatched = false;
51
- for (let i = 0; i < this.Routes.length; i++) {
52
- let r = this.Routes[i];
53
- //Se faccio match con la route significa che ho navigato in una delle route conosciute, altrimenti avverto ma lascio andare
54
- if (url.indexOf(r.route) != -1) {
55
- routeMatched = true;
56
- return this.handleMatch(url, r);
57
- }
58
- }
59
- //Se non faccio nessun match ma ho una route wildcard (*) prendo quella e controllo su quella
60
- if (!routeMatched) {
61
- var wildcardRoute = this.Routes.find(r => r.route == "*");
62
- if (wildcardRoute)
63
- return this.handleMatch(url, wildcardRoute);
64
- else
65
- console.log("Navigaizone avvenuta su route sconosciuta: " + url);
66
- }
67
- return Promise.resolve(true);
68
- }
69
- /**
70
- * @ignore
71
- */
72
- handleMatch(fromurl, r) {
73
- let identity = this.ac.Identity;
74
- if (this.ac.has(r.permission) ||
75
- (
76
- // Considero anche la possibilità di avere l'access control inizializzato ma che l'account scope non sia ancora presente
77
- // in questo caso suppongo sia un hard refresh e mi fido del fatto che l'utente possa entrarci
78
- // TODO: Fixare meglio concatenando una promise che va a prendere l'account scope se serve
79
- this.ac.Initialized &&
80
- (!identity.Roles || identity.Roles.length == 0) &&
81
- (!identity.Permissions || identity.Permissions.length == 0)))
82
- return Promise.resolve(true);
83
- else {
84
- //Se sono nel sito originale (non ho aperto un newtab) blocco la navigazione
85
- //Se ho aperto una nuova tab invece rispedisco al login
86
- if (window.history.length > 2 && this.ac.isLoggedIn()) {
87
- this.msgService.simpleError("Page Unauthorized");
88
- return Promise.resolve(false);
89
- }
90
- else {
91
- this.onRedirectInProgress();
92
- this.router.navigate([this.LoginRoute, { fromUrl: fromurl }]);
93
- }
94
- }
95
- }
96
- /**
97
- * Callback che viene eseguito prima che la Guard reindirizzi al login
98
- */
99
- onRedirectInProgress() {
100
- }
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzQ29udHJvbFJvdXRlR3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvbGliL0FjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQW9CaEM7O09BRUc7SUFDSCxZQUFvQixVQUEyQixFQUFVLEVBQXdCLEVBQVUsTUFBYztRQUFyRixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXJCekc7Ozs7V0FJRztRQUNPLGVBQVUsR0FBWSxPQUFPLENBQUM7UUFFeEM7OztXQUdHO1FBQ08sdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBRTVDOztXQUVHO1FBQ08sV0FBTSxHQUEwQyxFQUFFLENBQUM7SUFNN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBNkIsRUFBRSxDQUFzQjtRQUNsRSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5Qiw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksWUFBWSxHQUFZLEtBQUssQ0FBQztRQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QiwySEFBMkg7WUFDM0gsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDNUIsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNuQztTQUNKO1FBQ0QsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDZixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7WUFDMUQsSUFBSSxhQUFhO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7O2dCQUU1QyxPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxPQUFlLEVBQUUsQ0FBTTtRQUN2QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDekI7WUFDSSx3SEFBd0g7WUFDeEgsOEZBQThGO1lBQzlGLDBGQUEwRjtZQUMxRixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVc7Z0JBQ25CLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQzlEO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsNEVBQTRFO1lBQzVFLHVEQUF1RDtZQUN2RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNqRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDakU7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLG9CQUFvQjtJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvL0FuZ3VsYXJcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy9MaWJzXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vL01vZGVsc1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gJy4vYWNjZXNzLWNvbnRyb2wuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogUm91dGVyIEd1YXJkIGJhc2UgcGVyIHByb3RlZ2dlcmUgbCdhY2Nlc3NvIGFsbGUgcm91dGUgZGVsbCdhcHBsaWNhemlvbmUuIFBlciB1dGlsaXp6YXJsYSDDqCBzdWZmaWNpZW50ZSBlcmVkaXRhcmxhIGUsIG5lbCBjb3N0cnV0dG9yZSBkZWxsYSBjbGFzc2VcclxuICogY2hlIGxhIGVyZWRpdGF2YWxvcml6emFyZSBsYSB2YXJpYWJpbGUgUm91dGVzIGNvbiBsZSByb3V0ZSBwZXJtZXNzZSBkYWwgbW9kdWxvIGUgaWwgcGVybWVzc28gcGVyIGN1aSBzaSB2dW9sZSByaXNlcnZhcmUgbCdhY2Nlc3NvLiBBZCBlc2VtcGlvOlxyXG4gKiBcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBASW5qZWN0YWJsZSgpXHJcbiAqIGV4cG9ydCBjbGFzcyBIYXNBdXRoR3VhcmRDb21wb25lbnQgZXh0ZW5kcyBCYXNlUm91dGVyR3VhcmQge1xyXG4gKiAgICAgIGNvbnN0cnVjdG9yKGFjYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIHJvdXRlcjogUm91dGVyLCBtczogTWVzc2FnZVNlcnZpY2UsIHRzOiBCYXNlVG9rZW5TZXJ2aWNlKSB7XHJcbiAqICAgICAgICAgIHN1cGVyKG1zLCBhY2MsIHJvdXRlciwgdHMpO1xyXG4gKiAgICAgICAgICB0aGlzLlJvdXRlcyA9IFtcclxuICogICAgICAgICAgICAgIHsgcm91dGU6IFwicGFnZV9yb3V0ZVwiLCBwZXJtaXNzaW9uOiBcIlA6cGVybV9vbmVcIiB9LFxyXG4gKiAgICAgICAgICAgICAgeyByb3V0ZTogXCIqXCIsIHBlcm1pc3Npb246IFwiUjpyb2xlX29uZVwiIH1cclxuICogICAgICAgICAgXVxyXG4gKiAgICAgIH1cclxuICogfVxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sUm91dGVHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlQ2hpbGQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUm91dGUgZGkgbG9naW4gY2hlIHNlcnZlIHBlciByZWluZGlyaXp6YXJlIGFsbGEgcGFnaW5hIGRpIGxvZ2luIGluIGNhc28gZGkgZmFsbGltZW50byBkZWwgY29udHJvbGxvIHN1aSBQZXJtZXNzaVxyXG4gICAgICogXHJcbiAgICAgKiBAZGVmYXVsdFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgTG9naW5Sb3V0ZSA6IHN0cmluZyA9IFwibG9naW5cIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGRlbGxlIFJvdXRlIHNlbXByZSBjb25zZW50aXRlLCBhbmNoZSBhIGxpdmVsbG8gZGkgXCJSYWRpY2VcIi4gQWQgZXNlbXBpbyBsYSBSb290IFwidGVzdFwiIHBlcm1ldHRlcsOgXHJcbiAgICAgKiBsJ2FjY2Vzc28gYSB0dXR0ZSBsZSByb3V0ZSBjaGUgYW5jaGUgc29sbyBpbml6aWFubyBwZXIgXCJ0ZXN0XCJcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIEFsd2F5c0FsbG93ZWRSb290czogc3RyaW5nW10gPSBbXTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0YSBkaSBSb3V0ZSBjb24gbGEgbG9ybyBlc3ByZXNzaW9uZSBkaSBjb250cm9sbG8gcGVyIHZhbHV0YXJlIGkgcGVybWVzc2lcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIFJvdXRlczogeyByb3V0ZTogYW55OyBwZXJtaXNzaW9uOiBzdHJpbmc7IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2UgOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY2FuQWN0aXZhdGVDaGlsZChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgXzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHZhciB1cmwgPSByb3V0ZS51cmwuam9pbignLycpO1xyXG4gICAgICAgIC8vU2UgbCdhcHBsaWNhemlvbmUgbm9uIMOoIHByb250YSBlIG5vbiBzdG8gbmF2aWdhbmRvIG5lbGxlIHBhZ2luZSBjb25zZW50aXRlXHJcbiAgICAgICAgaWYgKCF0aGlzLmFjLkluaXRpYWxpemVkICYmICF0aGlzLkFsd2F5c0FsbG93ZWRSb290cy5maW5kKHIgPT4gdXJsLmluZGV4T2YocikgIT0gLTEpKVxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgdmFyIHJvdXRlTWF0Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5Sb3V0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLlJvdXRlc1tpXTtcclxuICAgICAgICAgICAgLy9TZSBmYWNjaW8gbWF0Y2ggY29uIGxhIHJvdXRlIHNpZ25pZmljYSBjaGUgaG8gbmF2aWdhdG8gaW4gdW5hIGRlbGxlIHJvdXRlIGNvbm9zY2l1dGUsIGFsdHJpbWVudGkgYXZ2ZXJ0byBtYSBsYXNjaW8gYW5kYXJlXHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihyLnJvdXRlKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcm91dGVNYXRjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZU1hdGNoKHVybCwgcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy9TZSBub24gZmFjY2lvIG5lc3N1biBtYXRjaCBtYSBobyB1bmEgcm91dGUgd2lsZGNhcmQgKCopIHByZW5kbyBxdWVsbGEgZSBjb250cm9sbG8gc3UgcXVlbGxhXHJcbiAgICAgICAgaWYgKCFyb3V0ZU1hdGNoZWQpIHtcclxuICAgICAgICAgICAgdmFyIHdpbGRjYXJkUm91dGUgPSB0aGlzLlJvdXRlcy5maW5kKHIgPT4gci5yb3V0ZSA9PSBcIipcIik7XHJcbiAgICAgICAgICAgIGlmICh3aWxkY2FyZFJvdXRlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTWF0Y2godXJsLCB3aWxkY2FyZFJvdXRlKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJOYXZpZ2Fpem9uZSBhdnZlbnV0YSBzdSByb3V0ZSBzY29ub3NjaXV0YTogXCIgKyB1cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhbmRsZU1hdGNoKGZyb211cmw6IHN0cmluZywgcjogYW55KSB7XHJcbiAgICAgICAgbGV0IGlkZW50aXR5ID0gdGhpcy5hYy5JZGVudGl0eTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWMuaGFzKHIucGVybWlzc2lvbikgfHxcclxuICAgICAgICAgICAgKFxyXG4gICAgICAgICAgICAgICAgLy8gQ29uc2lkZXJvIGFuY2hlIGxhIHBvc3NpYmlsaXTDoCBkaSBhdmVyZSBsJ2FjY2VzcyBjb250cm9sIGluaXppYWxpenphdG8gbWEgY2hlIGwnYWNjb3VudCBzY29wZSBub24gc2lhIGFuY29yYSBwcmVzZW50ZVxyXG4gICAgICAgICAgICAgICAgLy8gaW4gcXVlc3RvIGNhc28gc3VwcG9uZ28gc2lhIHVuIGhhcmQgcmVmcmVzaCBlIG1pIGZpZG8gZGVsIGZhdHRvIGNoZSBsJ3V0ZW50ZSBwb3NzYSBlbnRyYXJjaVxyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogRml4YXJlIG1lZ2xpbyBjb25jYXRlbmFuZG8gdW5hIHByb21pc2UgY2hlIHZhIGEgcHJlbmRlcmUgbCdhY2NvdW50IHNjb3BlIHNlIHNlcnZlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjLkluaXRpYWxpemVkICYmXHJcbiAgICAgICAgICAgICAgICAoIWlkZW50aXR5LlJvbGVzIHx8IGlkZW50aXR5LlJvbGVzLmxlbmd0aCA9PSAwKSAmJlxyXG4gICAgICAgICAgICAgICAgKCFpZGVudGl0eS5QZXJtaXNzaW9ucyB8fCBpZGVudGl0eS5QZXJtaXNzaW9ucy5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy9TZSBzb25vIG5lbCBzaXRvIG9yaWdpbmFsZSAobm9uIGhvIGFwZXJ0byB1biBuZXd0YWIpIGJsb2NjbyBsYSBuYXZpZ2F6aW9uZVxyXG4gICAgICAgICAgICAvL1NlIGhvIGFwZXJ0byB1bmEgbnVvdmEgdGFiIGludmVjZSByaXNwZWRpc2NvIGFsIGxvZ2luXHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuaGlzdG9yeS5sZW5ndGggPiAyICYmIHRoaXMuYWMuaXNMb2dnZWRJbigpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IoXCJQYWdlIFVuYXV0aG9yaXplZFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJlZGlyZWN0SW5Qcm9ncmVzcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuTG9naW5Sb3V0ZSwgeyBmcm9tVXJsOiBmcm9tdXJsIH1dKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGNoZSB2aWVuZSBlc2VndWl0byBwcmltYSBjaGUgbGEgR3VhcmQgcmVpbmRpcml6emkgYWwgbG9naW5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uUmVkaXJlY3RJblByb2dyZXNzKCkge1xyXG4gICAgfVxyXG59Il19
1
+ /**
2
+ * Router Guard base per proteggere l'accesso alle route dell'applicazione. Per utilizzarla è sufficiente ereditarla e, nel costruttore della classe
3
+ * che la ereditavalorizzare la variabile Routes con le route permesse dal modulo e il permesso per cui si vuole riservare l'accesso. Ad esempio:
4
+ *
5
+ * ```typescript
6
+ * @Injectable()
7
+ * export class HasAuthGuardComponent extends BaseRouterGuard {
8
+ * constructor(acc: AccessControlService, router: Router, ms: MessageService, ts: BaseTokenService) {
9
+ * super(ms, acc, router, ts);
10
+ * this.Routes = [
11
+ * { route: "page_route", permission: "P:perm_one" },
12
+ * { route: "*", permission: "R:role_one" }
13
+ * ]
14
+ * }
15
+ * }
16
+ * ```
17
+ */
18
+ export class AccessControlRouteGuard {
19
+ /**
20
+ * @ignore
21
+ */
22
+ constructor(msgService, ac, router) {
23
+ this.msgService = msgService;
24
+ this.ac = ac;
25
+ this.router = router;
26
+ /**
27
+ * Route di login che serve per reindirizzare alla pagina di login in caso di fallimento del controllo sui Permessi
28
+ *
29
+ * @default
30
+ */
31
+ this.LoginRoute = "login";
32
+ /**
33
+ * Permette di specificare delle Route sempre consentite, anche a livello di "Radice". Ad esempio la Root "test" permetterà
34
+ * l'accesso a tutte le route che anche solo iniziano per "test"
35
+ */
36
+ this.AlwaysAllowedRoots = [];
37
+ /**
38
+ * Lista di Route con la loro espressione di controllo per valutare i permessi
39
+ */
40
+ this.Routes = [];
41
+ }
42
+ /**
43
+ * @ignore
44
+ */
45
+ canActivateChild(route, _) {
46
+ var url = route.url.join('/');
47
+ //Se l'applicazione non è pronta e non sto navigando nelle pagine consentite
48
+ if (!this.ac.Initialized && !this.AlwaysAllowedRoots.find(r => url.indexOf(r) != -1))
49
+ return Promise.resolve(false);
50
+ var routeMatched = false;
51
+ for (let i = 0; i < this.Routes.length; i++) {
52
+ let r = this.Routes[i];
53
+ //Se faccio match con la route significa che ho navigato in una delle route conosciute, altrimenti avverto ma lascio andare
54
+ if (url.indexOf(r.route) != -1) {
55
+ routeMatched = true;
56
+ return this.handleMatch(url, r);
57
+ }
58
+ }
59
+ //Se non faccio nessun match ma ho una route wildcard (*) prendo quella e controllo su quella
60
+ if (!routeMatched) {
61
+ var wildcardRoute = this.Routes.find(r => r.route == "*");
62
+ if (wildcardRoute)
63
+ return this.handleMatch(url, wildcardRoute);
64
+ else
65
+ console.log("Navigaizone avvenuta su route sconosciuta: " + url);
66
+ }
67
+ return Promise.resolve(true);
68
+ }
69
+ /**
70
+ * @ignore
71
+ */
72
+ handleMatch(fromurl, r) {
73
+ let identity = this.ac.Identity;
74
+ if (this.ac.has(r.permission) ||
75
+ (
76
+ // Considero anche la possibilità di avere l'access control inizializzato ma che l'account scope non sia ancora presente
77
+ // in questo caso suppongo sia un hard refresh e mi fido del fatto che l'utente possa entrarci
78
+ // TODO: Fixare meglio concatenando una promise che va a prendere l'account scope se serve
79
+ this.ac.Initialized &&
80
+ (!identity.Roles || identity.Roles.length == 0) &&
81
+ (!identity.Permissions || identity.Permissions.length == 0)))
82
+ return Promise.resolve(true);
83
+ else {
84
+ //Se sono nel sito originale (non ho aperto un newtab) blocco la navigazione
85
+ //Se ho aperto una nuova tab invece rispedisco al login
86
+ if (window.history.length > 2 && this.ac.isLoggedIn()) {
87
+ this.msgService.simpleError("Page Unauthorized");
88
+ return Promise.resolve(false);
89
+ }
90
+ else {
91
+ this.onRedirectInProgress();
92
+ this.router.navigate([this.LoginRoute, { fromUrl: fromurl }]);
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Callback che viene eseguito prima che la Guard reindirizzi al login
98
+ */
99
+ onRedirectInProgress() {
100
+ }
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzQ29udHJvbFJvdXRlR3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2Nlc3MtY29udHJvbC9zcmMvbGliL0FjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQW9CaEM7O09BRUc7SUFDSCxZQUFvQixVQUEyQixFQUFVLEVBQXdCLEVBQVUsTUFBYztRQUFyRixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXJCekc7Ozs7V0FJRztRQUNPLGVBQVUsR0FBWSxPQUFPLENBQUM7UUFFeEM7OztXQUdHO1FBQ08sdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBRTVDOztXQUVHO1FBQ08sV0FBTSxHQUEwQyxFQUFFLENBQUM7SUFNN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBNkIsRUFBRSxDQUFzQjtRQUNsRSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5Qiw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksWUFBWSxHQUFZLEtBQUssQ0FBQztRQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QiwySEFBMkg7WUFDM0gsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDNUIsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNuQztTQUNKO1FBQ0QsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDZixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7WUFDMUQsSUFBSSxhQUFhO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7O2dCQUU1QyxPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxPQUFlLEVBQUUsQ0FBTTtRQUN2QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDekI7WUFDSSx3SEFBd0g7WUFDeEgsOEZBQThGO1lBQzlGLDBGQUEwRjtZQUMxRixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVc7Z0JBQ25CLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQzlEO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsNEVBQTRFO1lBQzVFLHVEQUF1RDtZQUN2RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNqRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDakU7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLG9CQUFvQjtJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvL0FuZ3VsYXJcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy9MaWJzXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vL01vZGVsc1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gJy4vYWNjZXNzLWNvbnRyb2wuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogUm91dGVyIEd1YXJkIGJhc2UgcGVyIHByb3RlZ2dlcmUgbCdhY2Nlc3NvIGFsbGUgcm91dGUgZGVsbCdhcHBsaWNhemlvbmUuIFBlciB1dGlsaXp6YXJsYSDDqCBzdWZmaWNpZW50ZSBlcmVkaXRhcmxhIGUsIG5lbCBjb3N0cnV0dG9yZSBkZWxsYSBjbGFzc2VcclxuICogY2hlIGxhIGVyZWRpdGF2YWxvcml6emFyZSBsYSB2YXJpYWJpbGUgUm91dGVzIGNvbiBsZSByb3V0ZSBwZXJtZXNzZSBkYWwgbW9kdWxvIGUgaWwgcGVybWVzc28gcGVyIGN1aSBzaSB2dW9sZSByaXNlcnZhcmUgbCdhY2Nlc3NvLiBBZCBlc2VtcGlvOlxyXG4gKiBcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBASW5qZWN0YWJsZSgpXHJcbiAqIGV4cG9ydCBjbGFzcyBIYXNBdXRoR3VhcmRDb21wb25lbnQgZXh0ZW5kcyBCYXNlUm91dGVyR3VhcmQge1xyXG4gKiAgICAgIGNvbnN0cnVjdG9yKGFjYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIHJvdXRlcjogUm91dGVyLCBtczogTWVzc2FnZVNlcnZpY2UsIHRzOiBCYXNlVG9rZW5TZXJ2aWNlKSB7XHJcbiAqICAgICAgICAgIHN1cGVyKG1zLCBhY2MsIHJvdXRlciwgdHMpO1xyXG4gKiAgICAgICAgICB0aGlzLlJvdXRlcyA9IFtcclxuICogICAgICAgICAgICAgIHsgcm91dGU6IFwicGFnZV9yb3V0ZVwiLCBwZXJtaXNzaW9uOiBcIlA6cGVybV9vbmVcIiB9LFxyXG4gKiAgICAgICAgICAgICAgeyByb3V0ZTogXCIqXCIsIHBlcm1pc3Npb246IFwiUjpyb2xlX29uZVwiIH1cclxuICogICAgICAgICAgXVxyXG4gKiAgICAgIH1cclxuICogfVxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sUm91dGVHdWFyZCAge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUm91dGUgZGkgbG9naW4gY2hlIHNlcnZlIHBlciByZWluZGlyaXp6YXJlIGFsbGEgcGFnaW5hIGRpIGxvZ2luIGluIGNhc28gZGkgZmFsbGltZW50byBkZWwgY29udHJvbGxvIHN1aSBQZXJtZXNzaVxyXG4gICAgICogXHJcbiAgICAgKiBAZGVmYXVsdFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgTG9naW5Sb3V0ZSA6IHN0cmluZyA9IFwibG9naW5cIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGRlbGxlIFJvdXRlIHNlbXByZSBjb25zZW50aXRlLCBhbmNoZSBhIGxpdmVsbG8gZGkgXCJSYWRpY2VcIi4gQWQgZXNlbXBpbyBsYSBSb290IFwidGVzdFwiIHBlcm1ldHRlcsOgXHJcbiAgICAgKiBsJ2FjY2Vzc28gYSB0dXR0ZSBsZSByb3V0ZSBjaGUgYW5jaGUgc29sbyBpbml6aWFubyBwZXIgXCJ0ZXN0XCJcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIEFsd2F5c0FsbG93ZWRSb290czogc3RyaW5nW10gPSBbXTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0YSBkaSBSb3V0ZSBjb24gbGEgbG9ybyBlc3ByZXNzaW9uZSBkaSBjb250cm9sbG8gcGVyIHZhbHV0YXJlIGkgcGVybWVzc2lcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIFJvdXRlczogeyByb3V0ZTogYW55OyBwZXJtaXNzaW9uOiBzdHJpbmc7IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2UgOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY2FuQWN0aXZhdGVDaGlsZChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgXzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHZhciB1cmwgPSByb3V0ZS51cmwuam9pbignLycpO1xyXG4gICAgICAgIC8vU2UgbCdhcHBsaWNhemlvbmUgbm9uIMOoIHByb250YSBlIG5vbiBzdG8gbmF2aWdhbmRvIG5lbGxlIHBhZ2luZSBjb25zZW50aXRlXHJcbiAgICAgICAgaWYgKCF0aGlzLmFjLkluaXRpYWxpemVkICYmICF0aGlzLkFsd2F5c0FsbG93ZWRSb290cy5maW5kKHIgPT4gdXJsLmluZGV4T2YocikgIT0gLTEpKVxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgdmFyIHJvdXRlTWF0Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5Sb3V0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLlJvdXRlc1tpXTtcclxuICAgICAgICAgICAgLy9TZSBmYWNjaW8gbWF0Y2ggY29uIGxhIHJvdXRlIHNpZ25pZmljYSBjaGUgaG8gbmF2aWdhdG8gaW4gdW5hIGRlbGxlIHJvdXRlIGNvbm9zY2l1dGUsIGFsdHJpbWVudGkgYXZ2ZXJ0byBtYSBsYXNjaW8gYW5kYXJlXHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihyLnJvdXRlKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcm91dGVNYXRjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZU1hdGNoKHVybCwgcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy9TZSBub24gZmFjY2lvIG5lc3N1biBtYXRjaCBtYSBobyB1bmEgcm91dGUgd2lsZGNhcmQgKCopIHByZW5kbyBxdWVsbGEgZSBjb250cm9sbG8gc3UgcXVlbGxhXHJcbiAgICAgICAgaWYgKCFyb3V0ZU1hdGNoZWQpIHtcclxuICAgICAgICAgICAgdmFyIHdpbGRjYXJkUm91dGUgPSB0aGlzLlJvdXRlcy5maW5kKHIgPT4gci5yb3V0ZSA9PSBcIipcIik7XHJcbiAgICAgICAgICAgIGlmICh3aWxkY2FyZFJvdXRlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTWF0Y2godXJsLCB3aWxkY2FyZFJvdXRlKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJOYXZpZ2Fpem9uZSBhdnZlbnV0YSBzdSByb3V0ZSBzY29ub3NjaXV0YTogXCIgKyB1cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhbmRsZU1hdGNoKGZyb211cmw6IHN0cmluZywgcjogYW55KSB7XHJcbiAgICAgICAgbGV0IGlkZW50aXR5ID0gdGhpcy5hYy5JZGVudGl0eTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWMuaGFzKHIucGVybWlzc2lvbikgfHxcclxuICAgICAgICAgICAgKFxyXG4gICAgICAgICAgICAgICAgLy8gQ29uc2lkZXJvIGFuY2hlIGxhIHBvc3NpYmlsaXTDoCBkaSBhdmVyZSBsJ2FjY2VzcyBjb250cm9sIGluaXppYWxpenphdG8gbWEgY2hlIGwnYWNjb3VudCBzY29wZSBub24gc2lhIGFuY29yYSBwcmVzZW50ZVxyXG4gICAgICAgICAgICAgICAgLy8gaW4gcXVlc3RvIGNhc28gc3VwcG9uZ28gc2lhIHVuIGhhcmQgcmVmcmVzaCBlIG1pIGZpZG8gZGVsIGZhdHRvIGNoZSBsJ3V0ZW50ZSBwb3NzYSBlbnRyYXJjaVxyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogRml4YXJlIG1lZ2xpbyBjb25jYXRlbmFuZG8gdW5hIHByb21pc2UgY2hlIHZhIGEgcHJlbmRlcmUgbCdhY2NvdW50IHNjb3BlIHNlIHNlcnZlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjLkluaXRpYWxpemVkICYmXHJcbiAgICAgICAgICAgICAgICAoIWlkZW50aXR5LlJvbGVzIHx8IGlkZW50aXR5LlJvbGVzLmxlbmd0aCA9PSAwKSAmJlxyXG4gICAgICAgICAgICAgICAgKCFpZGVudGl0eS5QZXJtaXNzaW9ucyB8fCBpZGVudGl0eS5QZXJtaXNzaW9ucy5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy9TZSBzb25vIG5lbCBzaXRvIG9yaWdpbmFsZSAobm9uIGhvIGFwZXJ0byB1biBuZXd0YWIpIGJsb2NjbyBsYSBuYXZpZ2F6aW9uZVxyXG4gICAgICAgICAgICAvL1NlIGhvIGFwZXJ0byB1bmEgbnVvdmEgdGFiIGludmVjZSByaXNwZWRpc2NvIGFsIGxvZ2luXHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuaGlzdG9yeS5sZW5ndGggPiAyICYmIHRoaXMuYWMuaXNMb2dnZWRJbigpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IoXCJQYWdlIFVuYXV0aG9yaXplZFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJlZGlyZWN0SW5Qcm9ncmVzcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuTG9naW5Sb3V0ZSwgeyBmcm9tVXJsOiBmcm9tdXJsIH1dKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGNoZSB2aWVuZSBlc2VndWl0byBwcmltYSBjaGUgbGEgR3VhcmQgcmVpbmRpcml6emkgYWwgbG9naW5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uUmVkaXJlY3RJblByb2dyZXNzKCkge1xyXG4gICAgfVxyXG59Il19
@@ -1,52 +1,52 @@
1
- // Angular
2
- import { Directive, Input } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./access-control.service";
5
- /**
6
- * Direttiva che permette di gestire il controllo accessi su componenti HTML.
7
- *
8
- * Per gli esempi di utilizzo fare riferimento al README.
9
- */
10
- export class AccessControlDirective {
11
- /**
12
- * Costruttore
13
- *
14
- * @ignore
15
- */
16
- constructor(templateRef, viewContainer, _ac) {
17
- this.templateRef = templateRef;
18
- this.viewContainer = viewContainer;
19
- this._ac = _ac;
20
- /**
21
- * Espressione da processare scritta come {Chiave}:{Valore}
22
- *
23
- * Le {Chiave} disponibili sono di default "R" per i ruoli e "P" per i permessi. È possibile espanderle con le Custom Permissions.
24
- *
25
- * Nelle ultime versioni del template è anche presente di default la custom permission "X" che indica se l'applicaizone è Esterna o no
26
- */
27
- this.ac = null;
28
- /** Indica che l'esporessione **ac** è assoluta, cioè che non può essere modificata internamente ad esempio per aggiungere condizioni di default */
29
- this.acAbsolute = false;
30
- }
31
- ngOnInit() {
32
- var allow = this._ac.has(this.ac, this.acAbsolute);
33
- //Se ho i permessi, proseguo creando la vista nel DOM, altrimenti rimuovo il template
34
- if (allow)
35
- this.viewContainer.createEmbeddedView(this.templateRef);
36
- else
37
- this.viewContainer.clear();
38
- }
39
- }
40
- AccessControlDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Directive });
41
- AccessControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac", acAbsolute: "acAbsolute" }, ngImport: i0 });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlDirective, decorators: [{
43
- type: Directive,
44
- args: [{
45
- selector: '[ac]',
46
- }]
47
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.AccessControlService }]; }, propDecorators: { ac: [{
48
- type: Input
49
- }], acAbsolute: [{
50
- type: Input
51
- }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBS2hGOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBYy9COzs7O09BSUc7SUFDSCxZQUFvQixXQUE2QixFQUFVLGFBQStCLEVBQVUsR0FBeUI7UUFBekcsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFqQjdIOzs7Ozs7V0FNRztRQUNNLE9BQUUsR0FBWSxJQUFJLENBQUM7UUFFNUIsbUpBQW1KO1FBQzFJLGVBQVUsR0FBWSxLQUFLLENBQUM7SUFPNEYsQ0FBQztJQUdsSSxRQUFRO1FBQ0osSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkQscUZBQXFGO1FBRXJGLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOztZQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7O21IQTdCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUhsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxNQUFNO2lCQUNuQjtvS0FVWSxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tIFwiLi9hY2Nlc3MtY29udHJvbC5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogRGlyZXR0aXZhIGNoZSBwZXJtZXR0ZSBkaSBnZXN0aXJlIGlsIGNvbnRyb2xsbyBhY2Nlc3NpIHN1IGNvbXBvbmVudGkgSFRNTC4gXHJcbiAqIFxyXG4gKiBQZXIgZ2xpIGVzZW1waSBkaSB1dGlsaXp6byBmYXJlIHJpZmVyaW1lbnRvIGFsIFJFQURNRS5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYWNdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUge1xyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBFc3ByZXNzaW9uZSBkYSBwcm9jZXNzYXJlIHNjcml0dGEgY29tZSB7Q2hpYXZlfTp7VmFsb3JlfVxyXG4gICAgICogXHJcbiAgICAgKiBMZSB7Q2hpYXZlfSBkaXNwb25pYmlsaSBzb25vIGRpIGRlZmF1bHQgXCJSXCIgcGVyIGkgcnVvbGkgZSBcIlBcIiBwZXIgaSBwZXJtZXNzaS4gw4ggcG9zc2liaWxlIGVzcGFuZGVybGUgY29uIGxlIEN1c3RvbSBQZXJtaXNzaW9ucy5cclxuICAgICAqIFxyXG4gICAgICogTmVsbGUgdWx0aW1lIHZlcnNpb25pIGRlbCB0ZW1wbGF0ZSDDqCBhbmNoZSBwcmVzZW50ZSBkaSBkZWZhdWx0IGxhIGN1c3RvbSBwZXJtaXNzaW9uIFwiWFwiIGNoZSBpbmRpY2Egc2UgbCdhcHBsaWNhaXpvbmUgw6ggRXN0ZXJuYSBvIG5vXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGFjIDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvKiogSW5kaWNhIGNoZSBsJ2VzcG9yZXNzaW9uZSAqKmFjKiogw6ggYXNzb2x1dGEsIGNpb8OoIGNoZSBub24gcHXDsiBlc3NlcmUgbW9kaWZpY2F0YSBpbnRlcm5hbWVudGUgYWQgZXNlbXBpbyBwZXIgYWdnaXVuZ2VyZSBjb25kaXppb25pIGRpIGRlZmF1bHQgKi9cclxuICAgIEBJbnB1dCgpIGFjQWJzb2x1dGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlKSB7IH1cclxuXHJcblxyXG4gICAgbmdPbkluaXQoKXtcclxuICAgICAgICB2YXIgYWxsb3cgPSB0aGlzLl9hYy5oYXModGhpcy5hYywgdGhpcy5hY0Fic29sdXRlKTtcclxuXHJcbiAgICAgICAgLy9TZSBobyBpIHBlcm1lc3NpLCBwcm9zZWd1byBjcmVhbmRvIGxhIHZpc3RhIG5lbCBET00sIGFsdHJpbWVudGkgcmltdW92byBpbCB0ZW1wbGF0ZVxyXG5cclxuICAgICAgICBpZiAoYWxsb3cpIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgZWxzZSB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbn0iXX0=
1
+ // Angular
2
+ import { Directive, Input } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./access-control.service";
5
+ /**
6
+ * Direttiva che permette di gestire il controllo accessi su componenti HTML.
7
+ *
8
+ * Per gli esempi di utilizzo fare riferimento al README.
9
+ */
10
+ export class AccessControlDirective {
11
+ /**
12
+ * Costruttore
13
+ *
14
+ * @ignore
15
+ */
16
+ constructor(templateRef, viewContainer, _ac) {
17
+ this.templateRef = templateRef;
18
+ this.viewContainer = viewContainer;
19
+ this._ac = _ac;
20
+ /**
21
+ * Espressione da processare scritta come {Chiave}:{Valore}
22
+ *
23
+ * Le {Chiave} disponibili sono di default "R" per i ruoli e "P" per i permessi. È possibile espanderle con le Custom Permissions.
24
+ *
25
+ * Nelle ultime versioni del template è anche presente di default la custom permission "X" che indica se l'applicaizone è Esterna o no
26
+ */
27
+ this.ac = null;
28
+ /** Indica che l'esporessione **ac** è assoluta, cioè che non può essere modificata internamente ad esempio per aggiungere condizioni di default */
29
+ this.acAbsolute = false;
30
+ }
31
+ ngOnInit() {
32
+ var allow = this._ac.has(this.ac, this.acAbsolute);
33
+ //Se ho i permessi, proseguo creando la vista nel DOM, altrimenti rimuovo il template
34
+ if (allow)
35
+ this.viewContainer.createEmbeddedView(this.templateRef);
36
+ else
37
+ this.viewContainer.clear();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AccessControlDirective, selector: "[ac]", inputs: { ac: "ac", acAbsolute: "acAbsolute" }, ngImport: i0 }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlDirective, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: '[ac]',
46
+ }]
47
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.AccessControlService }]; }, propDecorators: { ac: [{
48
+ type: Input
49
+ }], acAbsolute: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBS2hGOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBYy9COzs7O09BSUc7SUFDSCxZQUFvQixXQUE2QixFQUFVLGFBQStCLEVBQVUsR0FBeUI7UUFBekcsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFqQjdIOzs7Ozs7V0FNRztRQUNNLE9BQUUsR0FBWSxJQUFJLENBQUM7UUFFNUIsbUpBQW1KO1FBQzFJLGVBQVUsR0FBWSxLQUFLLENBQUM7SUFPNEYsQ0FBQztJQUdsSSxRQUFRO1FBQ0osSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkQscUZBQXFGO1FBRXJGLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOztZQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7K0dBN0JRLHNCQUFzQjttR0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUhsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxNQUFNO2lCQUNuQjtvS0FVWSxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tIFwiLi9hY2Nlc3MtY29udHJvbC5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogRGlyZXR0aXZhIGNoZSBwZXJtZXR0ZSBkaSBnZXN0aXJlIGlsIGNvbnRyb2xsbyBhY2Nlc3NpIHN1IGNvbXBvbmVudGkgSFRNTC4gXHJcbiAqIFxyXG4gKiBQZXIgZ2xpIGVzZW1waSBkaSB1dGlsaXp6byBmYXJlIHJpZmVyaW1lbnRvIGFsIFJFQURNRS5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYWNdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUge1xyXG4gICAgXHJcbiAgICAvKiogXHJcbiAgICAgKiBFc3ByZXNzaW9uZSBkYSBwcm9jZXNzYXJlIHNjcml0dGEgY29tZSB7Q2hpYXZlfTp7VmFsb3JlfVxyXG4gICAgICogXHJcbiAgICAgKiBMZSB7Q2hpYXZlfSBkaXNwb25pYmlsaSBzb25vIGRpIGRlZmF1bHQgXCJSXCIgcGVyIGkgcnVvbGkgZSBcIlBcIiBwZXIgaSBwZXJtZXNzaS4gw4ggcG9zc2liaWxlIGVzcGFuZGVybGUgY29uIGxlIEN1c3RvbSBQZXJtaXNzaW9ucy5cclxuICAgICAqIFxyXG4gICAgICogTmVsbGUgdWx0aW1lIHZlcnNpb25pIGRlbCB0ZW1wbGF0ZSDDqCBhbmNoZSBwcmVzZW50ZSBkaSBkZWZhdWx0IGxhIGN1c3RvbSBwZXJtaXNzaW9uIFwiWFwiIGNoZSBpbmRpY2Egc2UgbCdhcHBsaWNhaXpvbmUgw6ggRXN0ZXJuYSBvIG5vXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGFjIDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvKiogSW5kaWNhIGNoZSBsJ2VzcG9yZXNzaW9uZSAqKmFjKiogw6ggYXNzb2x1dGEsIGNpb8OoIGNoZSBub24gcHXDsiBlc3NlcmUgbW9kaWZpY2F0YSBpbnRlcm5hbWVudGUgYWQgZXNlbXBpbyBwZXIgYWdnaXVuZ2VyZSBjb25kaXppb25pIGRpIGRlZmF1bHQgKi9cclxuICAgIEBJbnB1dCgpIGFjQWJzb2x1dGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlKSB7IH1cclxuXHJcblxyXG4gICAgbmdPbkluaXQoKXtcclxuICAgICAgICB2YXIgYWxsb3cgPSB0aGlzLl9hYy5oYXModGhpcy5hYywgdGhpcy5hY0Fic29sdXRlKTtcclxuXHJcbiAgICAgICAgLy9TZSBobyBpIHBlcm1lc3NpLCBwcm9zZWd1byBjcmVhbmRvIGxhIHZpc3RhIG5lbCBET00sIGFsdHJpbWVudGkgcmltdW92byBpbCB0ZW1wbGF0ZVxyXG5cclxuICAgICAgICBpZiAoYWxsb3cpIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgICAgZWxzZSB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbn0iXX0=
@@ -1,30 +1,30 @@
1
- import { NgModule } from '@angular/core';
2
- import { ACC_CUSTOMKEY, ACC_DEBUG_MODE, ACC_DEF_COND, ACC_DEF_COND_OP } from './tokens';
3
- import { AccessControlDirective } from './access-control.directive';
4
- import { ContextAwareDirective } from './context-aware.directive';
5
- import { AccessControlPipe } from './access-control.pipe';
6
- import * as i0 from "@angular/core";
7
- export class AccessControlModule {
8
- static forRoot(config) {
9
- return {
10
- ngModule: AccessControlModule,
11
- providers: [
12
- { provide: ACC_CUSTOMKEY, useValue: config?.contextAwareKey || null },
13
- { provide: ACC_DEF_COND, useValue: config?.defaultCondition || null },
14
- { provide: ACC_DEF_COND_OP, useValue: config?.defaultConditionLogicalOperator || '||' },
15
- { provide: ACC_DEBUG_MODE, useValue: config?.debugMode || false },
16
- ]
17
- };
18
- }
19
- }
20
- AccessControlModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
- AccessControlModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective, AccessControlPipe], exports: [AccessControlDirective, ContextAwareDirective, AccessControlPipe] });
22
- AccessControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlModule });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlModule, decorators: [{
24
- type: NgModule,
25
- args: [{
26
- declarations: [AccessControlDirective, ContextAwareDirective, AccessControlPipe],
27
- exports: [AccessControlDirective, ContextAwareDirective, AccessControlPipe]
28
- }]
29
- }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUd4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNMUQsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWtDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLCtCQUErQixJQUFJLElBQUksRUFBRTtnQkFDdkYsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLEtBQUssRUFBRTthQUNsRTtTQUNGLENBQUM7SUFDSixDQUFDOztnSEFYVSxtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFIZixzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsYUFDdEUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCO2lIQUU5RCxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFKL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsQ0FBQztvQkFDaEYsT0FBTyxFQUFDLENBQUMsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLENBQUM7aUJBQzNFIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBQ0NfQ1VTVE9NS0VZLCBBQ0NfREVCVUdfTU9ERSwgQUNDX0RFRl9DT05ELCBBQ0NfREVGX0NPTkRfT1AgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2FjY2Vzcy1jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRleHRBd2FyZURpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1hd2FyZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sUGlwZSB9IGZyb20gJy4vYWNjZXNzLWNvbnRyb2wucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0FjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsIENvbnRleHRBd2FyZURpcmVjdGl2ZSwgQWNjZXNzQ29udHJvbFBpcGVdLFxyXG4gIGV4cG9ydHM6W0FjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsIENvbnRleHRBd2FyZURpcmVjdGl2ZSwgQWNjZXNzQ29udHJvbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBY2Nlc3NDb250cm9sTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBY2Nlc3NDb250cm9sTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQWNjZXNzQ29udHJvbE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBBQ0NfQ1VTVE9NS0VZLCB1c2VWYWx1ZTogY29uZmlnPy5jb250ZXh0QXdhcmVLZXkgfHwgbnVsbCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQUNDX0RFRl9DT05ELCB1c2VWYWx1ZTogY29uZmlnPy5kZWZhdWx0Q29uZGl0aW9uIHx8IG51bGwgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFDQ19ERUZfQ09ORF9PUCwgdXNlVmFsdWU6IGNvbmZpZz8uZGVmYXVsdENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvciB8fCAnfHwnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBQ0NfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZz8uZGVidWdNb2RlIHx8IGZhbHNlIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59Il19
1
+ import { NgModule } from '@angular/core';
2
+ import { ACC_CUSTOMKEY, ACC_DEBUG_MODE, ACC_DEF_COND, ACC_DEF_COND_OP } from './tokens';
3
+ import { AccessControlDirective } from './access-control.directive';
4
+ import { ContextAwareDirective } from './context-aware.directive';
5
+ import { AccessControlPipe } from './access-control.pipe';
6
+ import * as i0 from "@angular/core";
7
+ export class AccessControlModule {
8
+ static forRoot(config) {
9
+ return {
10
+ ngModule: AccessControlModule,
11
+ providers: [
12
+ { provide: ACC_CUSTOMKEY, useValue: config?.contextAwareKey || null },
13
+ { provide: ACC_DEF_COND, useValue: config?.defaultCondition || null },
14
+ { provide: ACC_DEF_COND_OP, useValue: config?.defaultConditionLogicalOperator || '||' },
15
+ { provide: ACC_DEBUG_MODE, useValue: config?.debugMode || false },
16
+ ]
17
+ };
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AccessControlModule, declarations: [AccessControlDirective, ContextAwareDirective, AccessControlPipe], exports: [AccessControlDirective, ContextAwareDirective, AccessControlPipe] }); }
21
+ static { thisinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlModule }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlModule, decorators: [{
24
+ type: NgModule,
25
+ args: [{
26
+ declarations: [AccessControlDirective, ContextAwareDirective, AccessControlPipe],
27
+ exports: [AccessControlDirective, ContextAwareDirective, AccessControlPipe]
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNjZXNzLWNvbnRyb2wvc3JjL2xpYi9hY2Nlc3MtY29udHJvbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUd4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNMUQsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWtDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLCtCQUErQixJQUFJLElBQUksRUFBRTtnQkFDdkYsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLEtBQUssRUFBRTthQUNsRTtTQUNGLENBQUM7SUFDSixDQUFDOytHQVhVLG1CQUFtQjtnSEFBbkIsbUJBQW1CLGlCQUhmLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixhQUN0RSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUI7Z0hBRTlELG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsQ0FBQztvQkFDaEYsT0FBTyxFQUFDLENBQUMsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLENBQUM7aUJBQzNFIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBQ0NfQ1VTVE9NS0VZLCBBQ0NfREVCVUdfTU9ERSwgQUNDX0RFRl9DT05ELCBBQ0NfREVGX0NPTkRfT1AgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvQWNjZXNzQ29udHJvbE1vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2FjY2Vzcy1jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRleHRBd2FyZURpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1hd2FyZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sUGlwZSB9IGZyb20gJy4vYWNjZXNzLWNvbnRyb2wucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0FjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsIENvbnRleHRBd2FyZURpcmVjdGl2ZSwgQWNjZXNzQ29udHJvbFBpcGVdLFxyXG4gIGV4cG9ydHM6W0FjY2Vzc0NvbnRyb2xEaXJlY3RpdmUsIENvbnRleHRBd2FyZURpcmVjdGl2ZSwgQWNjZXNzQ29udHJvbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NDb250cm9sTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBY2Nlc3NDb250cm9sTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBY2Nlc3NDb250cm9sTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQWNjZXNzQ29udHJvbE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBBQ0NfQ1VTVE9NS0VZLCB1c2VWYWx1ZTogY29uZmlnPy5jb250ZXh0QXdhcmVLZXkgfHwgbnVsbCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQUNDX0RFRl9DT05ELCB1c2VWYWx1ZTogY29uZmlnPy5kZWZhdWx0Q29uZGl0aW9uIHx8IG51bGwgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFDQ19ERUZfQ09ORF9PUCwgdXNlVmFsdWU6IGNvbmZpZz8uZGVmYXVsdENvbmRpdGlvbkxvZ2ljYWxPcGVyYXRvciB8fCAnfHwnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBQ0NfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZz8uZGVidWdNb2RlIHx8IGZhbHNlIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59Il19
@@ -1,31 +1,31 @@
1
- // Angular
2
- import { Pipe } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./access-control.service";
5
- /**
6
- * Pipe che restituisce **true** quando il controllo sugli accessi ha successo, false altrimenti
7
- *
8
- * Per gli esempi di utilizzo fare riferimento al README.
9
- */
10
- export class AccessControlPipe {
11
- /** @ignore Costruttore */
12
- constructor(_ac) {
13
- this._ac = _ac;
14
- }
15
- /**
16
- * Trasforma l'espressione ac in un booleano
17
- * @param value Espressione ac
18
- * @param absolute Indica se valutare **ac** in maniera assoluta o meno
19
- * @returns **true** se la condizione è verificata, **false** altrimenti
20
- */
21
- transform(value, absolute) {
22
- return this._ac.has(value, absolute);
23
- }
24
- }
25
- AccessControlPipefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlPipe, deps: [{ token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Pipe });
26
- AccessControlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: AccessControlPipe, name: "ac" });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AccessControlPipe, decorators: [{
28
- type: Pipe,
29
- args: [{ name: 'ac' }]
30
- }], ctorParameters: function () { return [{ type: i1.AccessControlService }]; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvYWNjZXNzLWNvbnRyb2wucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQUtwRDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUcxQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBeUI7UUFBekIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7SUFBSSxDQUFDO0lBRWxEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFrQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs4R0FkUSxpQkFBaUI7NEdBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gXCIuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBQaXBlIGNoZSByZXN0aXR1aXNjZSAqKnRydWUqKiBxdWFuZG8gaWwgY29udHJvbGxvIHN1Z2xpIGFjY2Vzc2kgaGEgc3VjY2Vzc28sIGZhbHNlIGFsdHJpbWVudGkgXHJcbiAqIFxyXG4gKiBQZXIgZ2xpIGVzZW1waSBkaSB1dGlsaXp6byBmYXJlIHJpZmVyaW1lbnRvIGFsIFJFQURNRS5cclxuICovXHJcbkBQaXBlKHsgbmFtZTogJ2FjJyB9KVxyXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29udHJvbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjOiBBY2Nlc3NDb250cm9sU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWEgbCdlc3ByZXNzaW9uZSBhYyBpbiB1biBib29sZWFub1xyXG4gICAgICogQHBhcmFtIHZhbHVlIEVzcHJlc3Npb25lIGFjXHJcbiAgICAgKiBAcGFyYW0gYWJzb2x1dGUgSW5kaWNhIHNlIHZhbHV0YXJlICoqYWMqKiBpbiBtYW5pZXJhIGFzc29sdXRhIG8gbWVub1xyXG4gICAgICogQHJldHVybnMgKip0cnVlKiogc2UgbGEgY29uZGl6aW9uZSDDqCB2ZXJpZmljYXRhLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgYWJzb2x1dGU/OiBib29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjLmhhcyh2YWx1ZSwgYWJzb2x1dGUpO1xyXG4gICAgfVxyXG59Il19
1
+ // Angular
2
+ import { Pipe } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./access-control.service";
5
+ /**
6
+ * Pipe che restituisce **true** quando il controllo sugli accessi ha successo, false altrimenti
7
+ *
8
+ * Per gli esempi di utilizzo fare riferimento al README.
9
+ */
10
+ export class AccessControlPipe {
11
+ /** @ignore Costruttore */
12
+ constructor(_ac) {
13
+ this._ac = _ac;
14
+ }
15
+ /**
16
+ * Trasforma l'espressione ac in un booleano
17
+ * @param value Espressione ac
18
+ * @param absolute Indica se valutare **ac** in maniera assoluta o meno
19
+ * @returns **true** se la condizione è verificata, **false** altrimenti
20
+ */
21
+ transform(value, absolute) {
22
+ return this._ac.has(value, absolute);
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlPipe, deps: [{ token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Pipe }); }
25
+ static { thispipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AccessControlPipe, name: "ac" }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlPipe, decorators: [{
28
+ type: Pipe,
29
+ args: [{ name: 'ac' }]
30
+ }], ctorParameters: function () { return [{ type: i1.AccessControlService }]; } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FjY2Vzcy1jb250cm9sL3NyYy9saWIvYWNjZXNzLWNvbnRyb2wucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQUtwRDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUcxQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBeUI7UUFBekIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7SUFBSSxDQUFDO0lBRWxEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUFrQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDOytHQWRRLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gXCIuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBQaXBlIGNoZSByZXN0aXR1aXNjZSAqKnRydWUqKiBxdWFuZG8gaWwgY29udHJvbGxvIHN1Z2xpIGFjY2Vzc2kgaGEgc3VjY2Vzc28sIGZhbHNlIGFsdHJpbWVudGkgXHJcbiAqIFxyXG4gKiBQZXIgZ2xpIGVzZW1waSBkaSB1dGlsaXp6byBmYXJlIHJpZmVyaW1lbnRvIGFsIFJFQURNRS5cclxuICovXHJcbkBQaXBlKHsgbmFtZTogJ2FjJyB9KVxyXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29udHJvbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjOiBBY2Nlc3NDb250cm9sU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWEgbCdlc3ByZXNzaW9uZSBhYyBpbiB1biBib29sZWFub1xyXG4gICAgICogQHBhcmFtIHZhbHVlIEVzcHJlc3Npb25lIGFjXHJcbiAgICAgKiBAcGFyYW0gYWJzb2x1dGUgSW5kaWNhIHNlIHZhbHV0YXJlICoqYWMqKiBpbiBtYW5pZXJhIGFzc29sdXRhIG8gbWVub1xyXG4gICAgICogQHJldHVybnMgKip0cnVlKiogc2UgbGEgY29uZGl6aW9uZSDDqCB2ZXJpZmljYXRhLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgYWJzb2x1dGU/OiBib29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjLmhhcyh2YWx1ZSwgYWJzb2x1dGUpO1xyXG4gICAgfVxyXG59Il19