UNPKG

@bixi/ac

Version:
2 lines 6.01 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("@angular/router"),require("@angular/common")):"function"==typeof define&&define.amd?define("@bixi/ac",["exports","@angular/core","rxjs","@angular/router","@angular/common"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).bixi=e.bixi||{},e.bixi.ac={}),e.ng.core,e.rxjs,e.ng.router,e.ng.common)}(this,(function(e,t,i,r,n){"use strict";function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}var s=o(t),c=o(r);var a=Array.isArray,u=function(e){return e?a(e)?e:[e]:[]},p=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=[]),!!t.find((function(t){return e.includes(t)}))},f=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=[]),!!t.every((function(t){return e.includes(t)}))},l=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=[]),!!t.find((function(t){return!e.includes(t)}))},h=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=[]),t.every((function(t){return!e.includes(t)}))},y=function(){function e(){this._permissions=[],this._roles=[],this._roles$=new i.BehaviorSubject([]),this._permissions$=new i.BehaviorSubject([])}return Object.defineProperty(e.prototype,"roles$",{get:function(){return this._roles$},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"permissions$",{get:function(){return this._permissions$},enumerable:!1,configurable:!0}),e.prototype.ac=function(e,t){return void 0===t&&(t={isRole:!1}),f(t.isRole?this._roles:this._permissions,u(e))},e.prototype.acAny=function(e,t){return void 0===t&&(t={isRole:!1}),p(t.isRole?this._roles:this._permissions,u(e))},e.prototype.ace=function(e,t){return void 0===t&&(t={isRole:!1}),h(t.isRole?this._roles:this._permissions,u(e))},e.prototype.aceAny=function(e,t){return void 0===t&&(t={isRole:!1}),l(t.isRole?this._roles:this._permissions,u(e))},e.prototype.setPermissions=function(e){this._permissions=u(e),this._permissions$.next(this._permissions)},e.prototype.setRoles=function(e){this._roles=u(e),this._roles$.next(this._roles)},e.prototype.getPermissions=function(){return this._permissions||[]},e.prototype.getRoles=function(){return this._roles||[]},e.prototype.clear=function(){this.setPermissions([]),this.setRoles([])},e}();y.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],y.ɵprov=s.ɵɵdefineInjectable({factory:function(){return new y},token:y,providedIn:"root"});var d=function(){function e(e,t,r,n){var o=this;this.viewContainer=e,this.templateRef=t,this.acService=r,this.changeDetector=n,this.subscription=i.Subscription.EMPTY,this._isRole=!1,this.subscription=i.combineLatest([this.acService.permissions$,this.acService.roles$]).subscribe((function(){o.checkView()}))}return Object.defineProperty(e.prototype,"isRole",{set:function(e){this._isRole=e,this.checkView()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ac",{set:function(e){this._ac=e,this.checkView()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"acAny",{set:function(e){this._acAny=e,this.checkView()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ace",{set:function(e){this._ace=e,this.checkView()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"aceAny",{set:function(e){this._aceAny=e,this.checkView()},enumerable:!1,configurable:!0}),e.prototype.checkView=function(){this.viewContainer.clear(),this.hasPermissions()&&this.templateRef&&(this.viewContainer.createEmbeddedView(this.templateRef),this.changeDetector.markForCheck())},e.prototype.hasPermissions=function(){var e=this._isRole;return this._ac?this.acService.ac(this._ac,{isRole:e}):this._acAny?this.acService.acAny(this._acAny,{isRole:e}):this._ace?this.acService.ace(this._ace,{isRole:e}):!!this._aceAny&&this.acService.aceAny(this._aceAny,{isRole:e})},e.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},e}();d.decorators=[{type:t.Directive,args:[{selector:"[ac],[acAny],[ace],[aceAny]"}]}],d.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:y},{type:t.ChangeDetectorRef}]},d.propDecorators={isRole:[{type:t.Input}],ac:[{type:t.Input}],acAny:[{type:t.Input}],ace:[{type:t.Input}],aceAny:[{type:t.Input}]};var v=function(){function e(e,t){this.acService=e,this.router=t}return e.prototype.canActivate=function(e){return i.of(this.hasPermissions(e))},e.prototype.canActivateChild=function(e){return this.canActivate(e)},e.prototype.canLoad=function(e){return i.of(this.hasPermissions(e))},e.prototype.hasPermissions=function(e){if(!(e&&e.data&&e.data.ac))return!0;var t=e.data.ac||{},i=t.isRole,r=void 0!==i&&i,n=t.ac,o=t.acAny,s=t.ace,c=t.aceAny,a=t.redirectTo;if([n,o,s,c].filter((function(e){return!!e})).length>1)return console.error("[@bixi/ac] 同一个路由只能使用 ['ac', 'acAny', 'ace', 'aceAny'] 中一条规则"),!1;var u=!1;return n&&(u=this.acService.ac(n,{isRole:r})),o&&(u=this.acService.acAny(o,{isRole:r})),s&&(u=this.acService.ace(s,{isRole:r})),c&&(u=this.acService.aceAny(c,{isRole:r})),u||(a?(console.log("[@bixi/ac] 没有路由访问权限,重定向至 -> "+a,e),this.router.navigateByUrl(a),u):(console.warn("[@bixi/ac] 没有路由访问权限,无重定向路由",e),u))},e}();v.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],v.ctorParameters=function(){return[{type:y},{type:r.Router}]},v.ɵprov=s.ɵɵdefineInjectable({factory:function(){return new v(s.ɵɵinject(y),s.ɵɵinject(c.Router))},token:v,providedIn:"root"});var b=function(){};b.decorators=[{type:t.NgModule,args:[{imports:[n.CommonModule],declarations:[d],exports:[d]}]}],e.BixiACDirective=d,e.BixiACGuard=v,e.BixiACModule=b,e.BixiACService=y,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=ac.umd.min.js.map