@yelon/acl 12.0.17 → 12.0.18
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.
- package/LICENSE +21 -21
- package/acl.d.ts +4 -4
- package/bundles/acl.umd.js +785 -785
- package/esm2015/acl.js +4 -4
- package/esm2015/index.js +7 -7
- package/esm2015/src/acl-guard.js +58 -58
- package/esm2015/src/acl-if.directive.js +77 -77
- package/esm2015/src/acl.config.js +3 -3
- package/esm2015/src/acl.directive.js +46 -46
- package/esm2015/src/acl.module.js +21 -21
- package/esm2015/src/acl.service.js +194 -194
- package/esm2015/src/acl.type.js +6 -6
- package/fesm2015/acl.js +376 -376
- package/index.d.ts +7 -7
- package/package.json +2 -2
- package/src/acl-guard.d.ts +25 -25
- package/src/acl-if.directive.d.ts +23 -23
- package/src/acl.config.d.ts +2 -2
- package/src/acl.directive.d.ts +15 -15
- package/src/acl.module.d.ts +4 -4
- package/src/acl.service.d.ts +75 -75
- package/src/acl.type.d.ts +33 -33
package/esm2015/acl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNsL2FjbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
package/esm2015/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './src/acl.service';
|
|
2
|
-
export * from './src/acl-if.directive';
|
|
3
|
-
export * from './src/acl.directive';
|
|
4
|
-
export * from './src/acl.config';
|
|
5
|
-
export * from './src/acl.type';
|
|
6
|
-
export * from './src/acl-guard';
|
|
7
|
-
export * from './src/acl.module';
|
|
1
|
+
export * from './src/acl.service';
|
|
2
|
+
export * from './src/acl-if.directive';
|
|
3
|
+
export * from './src/acl.directive';
|
|
4
|
+
export * from './src/acl.config';
|
|
5
|
+
export * from './src/acl.type';
|
|
6
|
+
export * from './src/acl-guard';
|
|
7
|
+
export * from './src/acl.module';
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hY2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2FjbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FjbC1pZi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvYWNsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hY2wuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FjbC50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FjbC1ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9hY2wubW9kdWxlJztcbiJdfQ==
|
package/esm2015/src/acl-guard.js
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { Injectable, Injector } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { Observable, of } from 'rxjs';
|
|
4
|
-
import { map, tap } from 'rxjs/operators';
|
|
5
|
-
import { ACLService } from './acl.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./acl.service";
|
|
8
|
-
import * as i2 from "@angular/router";
|
|
9
|
-
/**
|
|
10
|
-
* Routing guard prevent unauthorized users visit the page, [ACL Document](https://ng.yunzainfo.com/acl).
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* data: {
|
|
14
|
-
* path: 'home',
|
|
15
|
-
* canActivate: [ ACLGuard ],
|
|
16
|
-
* data: { guard: 'user1' }
|
|
17
|
-
* }
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export class ACLGuard {
|
|
21
|
-
constructor(srv, router, injector) {
|
|
22
|
-
this.srv = srv;
|
|
23
|
-
this.router = router;
|
|
24
|
-
this.injector = injector;
|
|
25
|
-
}
|
|
26
|
-
process(data) {
|
|
27
|
-
data = Object.assign({ guard: null, guard_url: this.srv.guard_url }, data);
|
|
28
|
-
let guard = data.guard;
|
|
29
|
-
if (typeof guard === 'function')
|
|
30
|
-
guard = guard(this.srv, this.injector);
|
|
31
|
-
return (guard && guard instanceof Observable ? guard : of(guard != null ? guard : null)).pipe(map(v => this.srv.can(v)), tap(v => {
|
|
32
|
-
if (v)
|
|
33
|
-
return;
|
|
34
|
-
this.router.navigateByUrl(data.guard_url);
|
|
35
|
-
}));
|
|
36
|
-
}
|
|
37
|
-
// lazy loading
|
|
38
|
-
canLoad(route) {
|
|
39
|
-
return this.process(route.data);
|
|
40
|
-
}
|
|
41
|
-
// all children route
|
|
42
|
-
canActivateChild(childRoute, state) {
|
|
43
|
-
return this.canActivate(childRoute, state);
|
|
44
|
-
}
|
|
45
|
-
// route
|
|
46
|
-
canActivate(route, _state) {
|
|
47
|
-
return this.process(route.data);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
ACLGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function ACLGuard_Factory() { return new ACLGuard(i0.ɵɵinject(i1.ACLService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i0.INJECTOR)); }, token: ACLGuard, providedIn: "root" });
|
|
51
|
-
ACLGuard.decorators = [
|
|
52
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
53
|
-
];
|
|
54
|
-
ACLGuard.ctorParameters = () => [
|
|
55
|
-
{ type: ACLService },
|
|
56
|
-
{ type: Router },
|
|
57
|
-
{ type: Injector }
|
|
58
|
-
];
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { Observable, of } from 'rxjs';
|
|
4
|
+
import { map, tap } from 'rxjs/operators';
|
|
5
|
+
import { ACLService } from './acl.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./acl.service";
|
|
8
|
+
import * as i2 from "@angular/router";
|
|
9
|
+
/**
|
|
10
|
+
* Routing guard prevent unauthorized users visit the page, [ACL Document](https://ng.yunzainfo.com/acl).
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* data: {
|
|
14
|
+
* path: 'home',
|
|
15
|
+
* canActivate: [ ACLGuard ],
|
|
16
|
+
* data: { guard: 'user1' }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class ACLGuard {
|
|
21
|
+
constructor(srv, router, injector) {
|
|
22
|
+
this.srv = srv;
|
|
23
|
+
this.router = router;
|
|
24
|
+
this.injector = injector;
|
|
25
|
+
}
|
|
26
|
+
process(data) {
|
|
27
|
+
data = Object.assign({ guard: null, guard_url: this.srv.guard_url }, data);
|
|
28
|
+
let guard = data.guard;
|
|
29
|
+
if (typeof guard === 'function')
|
|
30
|
+
guard = guard(this.srv, this.injector);
|
|
31
|
+
return (guard && guard instanceof Observable ? guard : of(guard != null ? guard : null)).pipe(map(v => this.srv.can(v)), tap(v => {
|
|
32
|
+
if (v)
|
|
33
|
+
return;
|
|
34
|
+
this.router.navigateByUrl(data.guard_url);
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
// lazy loading
|
|
38
|
+
canLoad(route) {
|
|
39
|
+
return this.process(route.data);
|
|
40
|
+
}
|
|
41
|
+
// all children route
|
|
42
|
+
canActivateChild(childRoute, state) {
|
|
43
|
+
return this.canActivate(childRoute, state);
|
|
44
|
+
}
|
|
45
|
+
// route
|
|
46
|
+
canActivate(route, _state) {
|
|
47
|
+
return this.process(route.data);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
ACLGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function ACLGuard_Factory() { return new ACLGuard(i0.ɵɵinject(i1.ACLService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i0.INJECTOR)); }, token: ACLGuard, providedIn: "root" });
|
|
51
|
+
ACLGuard.decorators = [
|
|
52
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
53
|
+
];
|
|
54
|
+
ACLGuard.ctorParameters = () => [
|
|
55
|
+
{ type: ACLService },
|
|
56
|
+
{ type: Router },
|
|
57
|
+
{ type: Injector }
|
|
58
|
+
];
|
|
59
59
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLWd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNsL3NyYy9hY2wtZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQU9MLE1BQU0sRUFFUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUczQzs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFPLFFBQVE7SUFDbkIsWUFBb0IsR0FBZSxFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUFuRSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRW5GLE9BQU8sQ0FBQyxJQUFVO1FBQ3hCLElBQUksbUJBQ0YsS0FBSyxFQUFFLElBQUksRUFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQzFCLElBQUksQ0FDUixDQUFDO1FBQ0YsSUFBSSxLQUFLLEdBQWlCLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVO1lBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFFLEtBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUM7Z0JBQUUsT0FBTztZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7SUFDZixPQUFPLENBQUMsS0FBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxxQkFBcUI7SUFDckIsZ0JBQWdCLENBQUMsVUFBa0MsRUFBRSxLQUEwQjtRQUM3RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxRQUFRO0lBQ1IsV0FBVyxDQUFDLEtBQTZCLEVBQUUsTUFBa0M7UUFDM0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7O1lBaENGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQWR6QixVQUFVO1lBTmpCLE1BQU07WUFSYSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBDYW5Mb2FkLFxuICBEYXRhLFxuICBSb3V0ZSxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFDTFNlcnZpY2UgfSBmcm9tICcuL2FjbC5zZXJ2aWNlJztcbmltcG9ydCB7IEFDTENhblR5cGUsIEFDTEd1YXJkVHlwZSB9IGZyb20gJy4vYWNsLnR5cGUnO1xuXG4vKipcbiAqIFJvdXRpbmcgZ3VhcmQgcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgdmlzaXQgdGhlIHBhZ2UsIFtBQ0wgRG9jdW1lbnRdKGh0dHBzOi8vbmcueXVuemFpbmZvLmNvbS9hY2wpLlxuICpcbiAqIGBgYHRzXG4gKiBkYXRhOiB7XG4gKiAgcGF0aDogJ2hvbWUnLFxuICogIGNhbkFjdGl2YXRlOiBbIEFDTEd1YXJkIF0sXG4gKiAgZGF0YTogeyBndWFyZDogJ3VzZXIxJyB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBQ0xHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkLCBDYW5Mb2FkIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzcnY6IEFDTFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIHByaXZhdGUgcHJvY2VzcyhkYXRhOiBEYXRhKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgZGF0YSA9IHtcbiAgICAgIGd1YXJkOiBudWxsLFxuICAgICAgZ3VhcmRfdXJsOiB0aGlzLnNydi5ndWFyZF91cmwsXG4gICAgICAuLi5kYXRhXG4gICAgfTtcbiAgICBsZXQgZ3VhcmQ6IEFDTEd1YXJkVHlwZSA9IGRhdGEuZ3VhcmQ7XG4gICAgaWYgKHR5cGVvZiBndWFyZCA9PT0gJ2Z1bmN0aW9uJykgZ3VhcmQgPSBndWFyZCh0aGlzLnNydiwgdGhpcy5pbmplY3Rvcik7XG4gICAgcmV0dXJuIChndWFyZCAmJiBndWFyZCBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyBndWFyZCA6IG9mKGd1YXJkICE9IG51bGwgPyAoZ3VhcmQgYXMgQUNMQ2FuVHlwZSkgOiBudWxsKSkucGlwZShcbiAgICAgIG1hcCh2ID0+IHRoaXMuc3J2LmNhbih2KSksXG4gICAgICB0YXAodiA9PiB7XG4gICAgICAgIGlmICh2KSByZXR1cm47XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoZGF0YS5ndWFyZF91cmwpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLy8gbGF6eSBsb2FkaW5nXG4gIGNhbkxvYWQocm91dGU6IFJvdXRlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzcyhyb3V0ZS5kYXRhISk7XG4gIH1cbiAgLy8gYWxsIGNoaWxkcmVuIHJvdXRlXG4gIGNhbkFjdGl2YXRlQ2hpbGQoY2hpbGRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShjaGlsZFJvdXRlLCBzdGF0ZSk7XG4gIH1cbiAgLy8gcm91dGVcbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIF9zdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCB8IG51bGwpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzKHJvdXRlLmRhdGEpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { filter } from 'rxjs/operators';
|
|
3
|
-
import { ACLService } from './acl.service';
|
|
4
|
-
export class ACLIfDirective {
|
|
5
|
-
constructor(templateRef, srv, _viewContainer) {
|
|
6
|
-
this.srv = srv;
|
|
7
|
-
this._viewContainer = _viewContainer;
|
|
8
|
-
this._thenTemplateRef = null;
|
|
9
|
-
this._elseTemplateRef = null;
|
|
10
|
-
this._thenViewRef = null;
|
|
11
|
-
this._elseViewRef = null;
|
|
12
|
-
this._except = false;
|
|
13
|
-
this._change$ = this.srv.change.pipe(filter(r => r != null)).subscribe(() => this._updateView());
|
|
14
|
-
this._thenTemplateRef = templateRef;
|
|
15
|
-
}
|
|
16
|
-
set aclIf(value) {
|
|
17
|
-
this._value = value;
|
|
18
|
-
this._updateView();
|
|
19
|
-
}
|
|
20
|
-
set aclIfThen(templateRef) {
|
|
21
|
-
this._thenTemplateRef = templateRef;
|
|
22
|
-
this._thenViewRef = null;
|
|
23
|
-
this._updateView();
|
|
24
|
-
}
|
|
25
|
-
set aclIfElse(templateRef) {
|
|
26
|
-
this._elseTemplateRef = templateRef;
|
|
27
|
-
this._elseViewRef = null;
|
|
28
|
-
this._updateView();
|
|
29
|
-
}
|
|
30
|
-
set except(value) {
|
|
31
|
-
this._except = value != null && `${value}` !== 'false';
|
|
32
|
-
}
|
|
33
|
-
get except() {
|
|
34
|
-
return this._except;
|
|
35
|
-
}
|
|
36
|
-
_updateView() {
|
|
37
|
-
const res = this.srv.can(this._value);
|
|
38
|
-
if ((res && !this.except) || (!res && this.except)) {
|
|
39
|
-
if (!this._thenViewRef) {
|
|
40
|
-
this._viewContainer.clear();
|
|
41
|
-
this._elseViewRef = null;
|
|
42
|
-
if (this._thenTemplateRef) {
|
|
43
|
-
this._thenViewRef = this._viewContainer.createEmbeddedView(this._thenTemplateRef);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
if (!this._elseViewRef) {
|
|
49
|
-
this._viewContainer.clear();
|
|
50
|
-
this._thenViewRef = null;
|
|
51
|
-
if (this._elseTemplateRef) {
|
|
52
|
-
this._elseViewRef = this._viewContainer.createEmbeddedView(this._elseTemplateRef);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
ngOnDestroy() {
|
|
58
|
-
this._change$.unsubscribe();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
ACLIfDirective.decorators = [
|
|
62
|
-
{ type: Directive, args: [{
|
|
63
|
-
selector: '[aclIf]',
|
|
64
|
-
exportAs: 'aclIf'
|
|
65
|
-
},] }
|
|
66
|
-
];
|
|
67
|
-
ACLIfDirective.ctorParameters = () => [
|
|
68
|
-
{ type: TemplateRef },
|
|
69
|
-
{ type: ACLService },
|
|
70
|
-
{ type: ViewContainerRef }
|
|
71
|
-
];
|
|
72
|
-
ACLIfDirective.propDecorators = {
|
|
73
|
-
aclIf: [{ type: Input }],
|
|
74
|
-
aclIfThen: [{ type: Input }],
|
|
75
|
-
aclIfElse: [{ type: Input }],
|
|
76
|
-
except: [{ type: Input }]
|
|
77
|
-
};
|
|
1
|
+
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { filter } from 'rxjs/operators';
|
|
3
|
+
import { ACLService } from './acl.service';
|
|
4
|
+
export class ACLIfDirective {
|
|
5
|
+
constructor(templateRef, srv, _viewContainer) {
|
|
6
|
+
this.srv = srv;
|
|
7
|
+
this._viewContainer = _viewContainer;
|
|
8
|
+
this._thenTemplateRef = null;
|
|
9
|
+
this._elseTemplateRef = null;
|
|
10
|
+
this._thenViewRef = null;
|
|
11
|
+
this._elseViewRef = null;
|
|
12
|
+
this._except = false;
|
|
13
|
+
this._change$ = this.srv.change.pipe(filter(r => r != null)).subscribe(() => this._updateView());
|
|
14
|
+
this._thenTemplateRef = templateRef;
|
|
15
|
+
}
|
|
16
|
+
set aclIf(value) {
|
|
17
|
+
this._value = value;
|
|
18
|
+
this._updateView();
|
|
19
|
+
}
|
|
20
|
+
set aclIfThen(templateRef) {
|
|
21
|
+
this._thenTemplateRef = templateRef;
|
|
22
|
+
this._thenViewRef = null;
|
|
23
|
+
this._updateView();
|
|
24
|
+
}
|
|
25
|
+
set aclIfElse(templateRef) {
|
|
26
|
+
this._elseTemplateRef = templateRef;
|
|
27
|
+
this._elseViewRef = null;
|
|
28
|
+
this._updateView();
|
|
29
|
+
}
|
|
30
|
+
set except(value) {
|
|
31
|
+
this._except = value != null && `${value}` !== 'false';
|
|
32
|
+
}
|
|
33
|
+
get except() {
|
|
34
|
+
return this._except;
|
|
35
|
+
}
|
|
36
|
+
_updateView() {
|
|
37
|
+
const res = this.srv.can(this._value);
|
|
38
|
+
if ((res && !this.except) || (!res && this.except)) {
|
|
39
|
+
if (!this._thenViewRef) {
|
|
40
|
+
this._viewContainer.clear();
|
|
41
|
+
this._elseViewRef = null;
|
|
42
|
+
if (this._thenTemplateRef) {
|
|
43
|
+
this._thenViewRef = this._viewContainer.createEmbeddedView(this._thenTemplateRef);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (!this._elseViewRef) {
|
|
49
|
+
this._viewContainer.clear();
|
|
50
|
+
this._thenViewRef = null;
|
|
51
|
+
if (this._elseTemplateRef) {
|
|
52
|
+
this._elseViewRef = this._viewContainer.createEmbeddedView(this._elseTemplateRef);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
ngOnDestroy() {
|
|
58
|
+
this._change$.unsubscribe();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
ACLIfDirective.decorators = [
|
|
62
|
+
{ type: Directive, args: [{
|
|
63
|
+
selector: '[aclIf]',
|
|
64
|
+
exportAs: 'aclIf'
|
|
65
|
+
},] }
|
|
66
|
+
];
|
|
67
|
+
ACLIfDirective.ctorParameters = () => [
|
|
68
|
+
{ type: TemplateRef },
|
|
69
|
+
{ type: ACLService },
|
|
70
|
+
{ type: ViewContainerRef }
|
|
71
|
+
];
|
|
72
|
+
ACLIfDirective.propDecorators = {
|
|
73
|
+
aclIf: [{ type: Input }],
|
|
74
|
+
aclIfThen: [{ type: Input }],
|
|
75
|
+
aclIfElse: [{ type: Input }],
|
|
76
|
+
except: [{ type: Input }]
|
|
77
|
+
};
|
|
78
78
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLWlmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjbC9zcmMvYWNsLWlmLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtQixLQUFLLEVBQWEsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLE1BQU0sT0FBTyxjQUFjO0lBV3pCLFlBQVksV0FBOEIsRUFBVSxHQUFlLEVBQVUsY0FBZ0M7UUFBekQsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQU5yRyxxQkFBZ0IsR0FBNkIsSUFBSSxDQUFDO1FBQ2xELHFCQUFnQixHQUE2QixJQUFJLENBQUM7UUFDbEQsaUJBQVksR0FBaUMsSUFBSSxDQUFDO1FBQ2xELGlCQUFZLEdBQWlDLElBQUksQ0FBQztRQUNsRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBR3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxLQUFpQjtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQ0ksU0FBUyxDQUFDLFdBQXFDO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNJLFNBQVMsQ0FBQyxXQUFxQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFDSSxNQUFNLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRVMsV0FBVztRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ25GO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUNuRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7O1lBdkVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsUUFBUSxFQUFFLE9BQU87YUFDbEI7OztZQVZzRCxXQUFXO1lBSXpELFVBQVU7WUFKaUQsZ0JBQWdCOzs7b0JBMkJqRixLQUFLO3dCQU1MLEtBQUs7d0JBT0wsS0FBSztxQkFPTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbWJlZGRlZFZpZXdSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQUNMU2VydmljZSB9IGZyb20gJy4vYWNsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQUNMQ2FuVHlwZSB9IGZyb20gJy4vYWNsLnR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSWZdJyxcbiAgZXhwb3J0QXM6ICdhY2xJZidcbn0pXG5leHBvcnQgY2xhc3MgQUNMSWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXhjZXB0OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICBwcml2YXRlIF92YWx1ZTogQUNMQ2FuVHlwZTtcbiAgcHJpdmF0ZSBfY2hhbmdlJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF90aGVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Vsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdGhlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9lbHNlVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2V4Y2VwdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPiwgcHJpdmF0ZSBzcnY6IEFDTFNlcnZpY2UsIHByaXZhdGUgX3ZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICB0aGlzLl9jaGFuZ2UkID0gdGhpcy5zcnYuY2hhbmdlLnBpcGUoZmlsdGVyKHIgPT4gciAhPSBudWxsKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZVZpZXcoKSk7XG4gICAgdGhpcy5fdGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYWNsSWYodmFsdWU6IEFDTENhblR5cGUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX3VwZGF0ZVZpZXcoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBhY2xJZlRoZW4odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX3RoZW5UZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICAgIHRoaXMuX3RoZW5WaWV3UmVmID0gbnVsbDtcbiAgICB0aGlzLl91cGRhdGVWaWV3KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYWNsSWZFbHNlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwpIHtcbiAgICB0aGlzLl9lbHNlVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAgICB0aGlzLl9lbHNlVmlld1JlZiA9IG51bGw7XG4gICAgdGhpcy5fdXBkYXRlVmlldygpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGV4Y2VwdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4Y2VwdCA9IHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbiAgfVxuICBnZXQgZXhjZXB0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9leGNlcHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3VwZGF0ZVZpZXcoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5zcnYuY2FuKHRoaXMuX3ZhbHVlKTtcbiAgICBpZiAoKHJlcyAmJiAhdGhpcy5leGNlcHQpIHx8ICghcmVzICYmIHRoaXMuZXhjZXB0KSkge1xuICAgICAgaWYgKCF0aGlzLl90aGVuVmlld1JlZikge1xuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuX2Vsc2VWaWV3UmVmID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuX3RoZW5UZW1wbGF0ZVJlZikge1xuICAgICAgICAgIHRoaXMuX3RoZW5WaWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGhlblRlbXBsYXRlUmVmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuX2Vsc2VWaWV3UmVmKSB7XG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5fdGhlblZpZXdSZWYgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5fZWxzZVRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy5fZWxzZVZpZXdSZWYgPSB0aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9lbHNlVGVtcGxhdGVSZWYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const ACL_DEFAULT_CONFIG = {
|
|
2
|
-
guard_url: `/403`
|
|
3
|
-
};
|
|
1
|
+
export const ACL_DEFAULT_CONFIG = {
|
|
2
|
+
guard_url: `/403`
|
|
3
|
+
};
|
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjbC9zcmMvYWNsLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBb0I7SUFDakQsU0FBUyxFQUFFLE1BQU07Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFl1bnphaUFDTENvbmZpZyB9IGZyb20gJ0B5ZWxvbi91dGlsL2NvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBBQ0xfREVGQVVMVF9DT05GSUc6IFl1bnphaUFDTENvbmZpZyA9IHtcbiAgZ3VhcmRfdXJsOiBgLzQwM2Bcbn07XG4iXX0=
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
-
import { filter } from 'rxjs/operators';
|
|
3
|
-
import { ACLService } from './acl.service';
|
|
4
|
-
export class ACLDirective {
|
|
5
|
-
constructor(el, renderer, srv) {
|
|
6
|
-
this.el = el;
|
|
7
|
-
this.renderer = renderer;
|
|
8
|
-
this.srv = srv;
|
|
9
|
-
this.change$ = this.srv.change.pipe(filter(r => r != null)).subscribe(() => this.set(this._value));
|
|
10
|
-
}
|
|
11
|
-
set acl(value) {
|
|
12
|
-
this.set(value);
|
|
13
|
-
}
|
|
14
|
-
set ability(value) {
|
|
15
|
-
this.set(this.srv.parseAbility(value));
|
|
16
|
-
}
|
|
17
|
-
set(value) {
|
|
18
|
-
this._value = value;
|
|
19
|
-
const CLS = 'acl__hide';
|
|
20
|
-
const el = this.el.nativeElement;
|
|
21
|
-
if (this.srv.can(this._value)) {
|
|
22
|
-
this.renderer.removeClass(el, CLS);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
this.renderer.addClass(el, CLS);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
ngOnDestroy() {
|
|
29
|
-
this.change$.unsubscribe();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
ACLDirective.decorators = [
|
|
33
|
-
{ type: Directive, args: [{
|
|
34
|
-
selector: '[acl]',
|
|
35
|
-
exportAs: 'acl'
|
|
36
|
-
},] }
|
|
37
|
-
];
|
|
38
|
-
ACLDirective.ctorParameters = () => [
|
|
39
|
-
{ type: ElementRef },
|
|
40
|
-
{ type: Renderer2 },
|
|
41
|
-
{ type: ACLService }
|
|
42
|
-
];
|
|
43
|
-
ACLDirective.propDecorators = {
|
|
44
|
-
acl: [{ type: Input, args: ['acl',] }],
|
|
45
|
-
ability: [{ type: Input, args: ['acl-ability',] }]
|
|
46
|
-
};
|
|
1
|
+
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
import { filter } from 'rxjs/operators';
|
|
3
|
+
import { ACLService } from './acl.service';
|
|
4
|
+
export class ACLDirective {
|
|
5
|
+
constructor(el, renderer, srv) {
|
|
6
|
+
this.el = el;
|
|
7
|
+
this.renderer = renderer;
|
|
8
|
+
this.srv = srv;
|
|
9
|
+
this.change$ = this.srv.change.pipe(filter(r => r != null)).subscribe(() => this.set(this._value));
|
|
10
|
+
}
|
|
11
|
+
set acl(value) {
|
|
12
|
+
this.set(value);
|
|
13
|
+
}
|
|
14
|
+
set ability(value) {
|
|
15
|
+
this.set(this.srv.parseAbility(value));
|
|
16
|
+
}
|
|
17
|
+
set(value) {
|
|
18
|
+
this._value = value;
|
|
19
|
+
const CLS = 'acl__hide';
|
|
20
|
+
const el = this.el.nativeElement;
|
|
21
|
+
if (this.srv.can(this._value)) {
|
|
22
|
+
this.renderer.removeClass(el, CLS);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.renderer.addClass(el, CLS);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.change$.unsubscribe();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
ACLDirective.decorators = [
|
|
33
|
+
{ type: Directive, args: [{
|
|
34
|
+
selector: '[acl]',
|
|
35
|
+
exportAs: 'acl'
|
|
36
|
+
},] }
|
|
37
|
+
];
|
|
38
|
+
ACLDirective.ctorParameters = () => [
|
|
39
|
+
{ type: ElementRef },
|
|
40
|
+
{ type: Renderer2 },
|
|
41
|
+
{ type: ACLService }
|
|
42
|
+
];
|
|
43
|
+
ACLDirective.propDecorators = {
|
|
44
|
+
acl: [{ type: Input, args: ['acl',] }],
|
|
45
|
+
ability: [{ type: Input, args: ['acl-ability',] }]
|
|
46
|
+
};
|
|
47
47
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjbC9zcmMvYWNsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLE1BQU0sT0FBTyxZQUFZO0lBeUJ2QixZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBWSxHQUFlO1FBQXRFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUN4RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBdkJELElBQ0ksR0FBRyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQ0ksT0FBTyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sR0FBRyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQztRQUN4QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFNRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs7WUFuQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSzthQUNoQjs7O1lBVm1CLFVBQVU7WUFBb0IsU0FBUztZQUlsRCxVQUFVOzs7a0JBV2hCLEtBQUssU0FBQyxLQUFLO3NCQUtYLEtBQUssU0FBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBQ0xTZXJ2aWNlIH0gZnJvbSAnLi9hY2wuc2VydmljZSc7XG5pbXBvcnQgeyBBQ0xDYW5UeXBlIH0gZnJvbSAnLi9hY2wudHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xdJyxcbiAgZXhwb3J0QXM6ICdhY2wnXG59KVxuZXhwb3J0IGNsYXNzIEFDTERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3ZhbHVlOiBBQ0xDYW5UeXBlO1xuICBwcml2YXRlIGNoYW5nZSQ6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoJ2FjbCcpXG4gIHNldCBhY2wodmFsdWU6IEFDTENhblR5cGUpIHtcbiAgICB0aGlzLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoJ2FjbC1hYmlsaXR5JylcbiAgc2V0IGFiaWxpdHkodmFsdWU6IEFDTENhblR5cGUpIHtcbiAgICB0aGlzLnNldCh0aGlzLnNydi5wYXJzZUFiaWxpdHkodmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0KHZhbHVlOiBBQ0xDYW5UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICBjb25zdCBDTFMgPSAnYWNsX19oaWRlJztcbiAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy5zcnYuY2FuKHRoaXMuX3ZhbHVlKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbCwgQ0xTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgQ0xTKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByb3RlY3RlZCBzcnY6IEFDTFNlcnZpY2UpIHtcbiAgICB0aGlzLmNoYW5nZSQgPSB0aGlzLnNydi5jaGFuZ2UucGlwZShmaWx0ZXIociA9PiByICE9IG51bGwpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXQodGhpcy5fdmFsdWUpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { ACLIfDirective } from './acl-if.directive';
|
|
4
|
-
import { ACLDirective } from './acl.directive';
|
|
5
|
-
import { ACLService } from './acl.service';
|
|
6
|
-
const COMPONENTS = [ACLDirective, ACLIfDirective];
|
|
7
|
-
export class YelonACLModule {
|
|
8
|
-
static forRoot() {
|
|
9
|
-
return {
|
|
10
|
-
ngModule: YelonACLModule,
|
|
11
|
-
providers: [ACLService]
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
YelonACLModule.decorators = [
|
|
16
|
-
{ type: NgModule, args: [{
|
|
17
|
-
imports: [CommonModule],
|
|
18
|
-
declarations: COMPONENTS,
|
|
19
|
-
exports: COMPONENTS
|
|
20
|
-
},] }
|
|
21
|
-
];
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { ACLIfDirective } from './acl-if.directive';
|
|
4
|
+
import { ACLDirective } from './acl.directive';
|
|
5
|
+
import { ACLService } from './acl.service';
|
|
6
|
+
const COMPONENTS = [ACLDirective, ACLIfDirective];
|
|
7
|
+
export class YelonACLModule {
|
|
8
|
+
static forRoot() {
|
|
9
|
+
return {
|
|
10
|
+
ngModule: YelonACLModule,
|
|
11
|
+
providers: [ACLService]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
YelonACLModule.decorators = [
|
|
16
|
+
{ type: NgModule, args: [{
|
|
17
|
+
imports: [CommonModule],
|
|
18
|
+
declarations: COMPONENTS,
|
|
19
|
+
exports: COMPONENTS
|
|
20
|
+
},] }
|
|
21
|
+
];
|
|
22
22
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FjbC9zcmMvYWNsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sVUFBVSxHQUFHLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQztTQUN4QixDQUFDO0lBQ0osQ0FBQzs7O1lBWEYsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLE9BQU8sRUFBRSxVQUFVO2FBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFDTElmRGlyZWN0aXZlIH0gZnJvbSAnLi9hY2wtaWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFDTERpcmVjdGl2ZSB9IGZyb20gJy4vYWNsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBQ0xTZXJ2aWNlIH0gZnJvbSAnLi9hY2wuc2VydmljZSc7XG5cbmNvbnN0IENPTVBPTkVOVFMgPSBbQUNMRGlyZWN0aXZlLCBBQ0xJZkRpcmVjdGl2ZV07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IENPTVBPTkVOVFMsXG4gIGV4cG9ydHM6IENPTVBPTkVOVFNcbn0pXG5leHBvcnQgY2xhc3MgWWVsb25BQ0xNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFllbG9uQUNMTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBZZWxvbkFDTE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW0FDTFNlcnZpY2VdXG4gICAgfTtcbiAgfVxufVxuIl19
|