UNPKG

@bixi/ac

Version:
111 lines 8.79 kB
/** * @fileoverview added by tsickle * Generated from: src/ac.guard.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; import { of } from 'rxjs'; import { BixiACService } from './ac.service'; import * as i0 from "@angular/core"; import * as i1 from "./ac.service"; import * as i2 from "@angular/router"; export class BixiACGuard { /** * @param {?} acService * @param {?} router */ constructor(acService, router) { this.acService = acService; this.router = router; } /** * @param {?} route * @return {?} */ canActivate(route) { return of(this.hasPermissions(route)); } /** * @param {?} childRoute * @return {?} */ canActivateChild(childRoute) { return this.canActivate(childRoute); } /** * @param {?} route * @return {?} */ canLoad(route) { return of(this.hasPermissions(route)); } /** * @private * @param {?} route * @return {?} */ hasPermissions(route) { if (!(route && route.data && route.data.ac)) { return true; } /** @type {?} */ const acData = route.data.ac || {}; const { isRole = false, ac, acAny, ace, aceAny, redirectTo } = acData; if ([ac, acAny, ace, aceAny].filter((/** * @param {?} s * @return {?} */ s => !!s)).length > 1) { console.error(`[@bixi/ac] 同一个路由只能使用 ['ac', 'acAny', 'ace', 'aceAny'] 中一条规则`); return false; } /** @type {?} */ let hasPermission = false; if (ac) { hasPermission = this.acService.ac(ac, { isRole }); } if (acAny) { hasPermission = this.acService.acAny(acAny, { isRole }); } if (ace) { hasPermission = this.acService.ace(ace, { isRole }); } if (aceAny) { hasPermission = this.acService.aceAny(aceAny, { isRole }); } if (hasPermission) return hasPermission; if (redirectTo) { console.log(`[@bixi/ac] 没有路由访问权限,重定向至 -> ${redirectTo}`, route); this.router.navigateByUrl(redirectTo); return hasPermission; } else { console.warn(`[@bixi/ac] 没有路由访问权限,无重定向路由`, route); return hasPermission; } } } BixiACGuard.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ BixiACGuard.ctorParameters = () => [ { type: BixiACService }, { type: Router } ]; /** @nocollapse */ BixiACGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function BixiACGuard_Factory() { return new BixiACGuard(i0.ɵɵinject(i1.BixiACService), i0.ɵɵinject(i2.Router)); }, token: BixiACGuard, providedIn: "root" }); if (false) { /** * @type {?} * @private */ BixiACGuard.prototype.acService; /** * @type {?} * @private */ BixiACGuard.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3N0ZXZlbnpob25nL0NvZGUvd29ya0NvZGUvYml4aV9hbmd1bGFyL3BhY2thZ2VzL2FjLyIsInNvdXJjZXMiOlsic3JjL2FjLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXlFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hILE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUc3QyxNQUFNLE9BQU8sV0FBVzs7Ozs7SUFDdEIsWUFBb0IsU0FBd0IsRUFBVSxNQUFjO1FBQWhELGNBQVMsR0FBVCxTQUFTLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUksQ0FBQzs7Ozs7SUFFekUsV0FBVyxDQUFDLEtBQTZCO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7OztJQUVELGdCQUFnQixDQUFDLFVBQWtDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7OztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7Ozs7SUFFTyxjQUFjLENBQUMsS0FBcUM7UUFDMUQsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQztTQUNiOztjQUNLLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFO2NBQzVCLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTTtRQUNyRSxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEQsT0FBTyxDQUFDLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1lBQzdFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7O1lBQ0csYUFBYSxHQUFHLEtBQUs7UUFDekIsSUFBSSxFQUFFLEVBQUU7WUFDTixhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksS0FBSyxFQUFFO1lBQ1QsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDekQ7UUFDRCxJQUFJLEdBQUcsRUFBRTtZQUNQLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxNQUFNLEVBQUU7WUFDVixhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksYUFBYTtZQUFFLE9BQU8sYUFBYSxDQUFDO1FBQ3hDLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEMsT0FBTyxhQUFhLENBQUM7U0FDdEI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsT0FBTyxhQUFhLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7WUFoREYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztZQUZ6QixhQUFhO1lBRjBELE1BQU07Ozs7Ozs7O0lBTXhFLGdDQUFnQzs7Ozs7SUFBRSw2QkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgQ2FuTG9hZCwgUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQml4aUFDU2VydmljZSB9IGZyb20gJy4vYWMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQml4aUFDR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgQ2FuTG9hZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWNTZXJ2aWNlOiBCaXhpQUNTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cblxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBvZih0aGlzLmhhc1Blcm1pc3Npb25zKHJvdXRlKSk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZUNoaWxkKGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShjaGlsZFJvdXRlKTtcbiAgfVxuXG4gIGNhbkxvYWQocm91dGU6IFJvdXRlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuaGFzUGVybWlzc2lvbnMocm91dGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzUGVybWlzc2lvbnMocm91dGU6IFJvdXRlIHwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGlmICghKHJvdXRlICYmIHJvdXRlLmRhdGEgJiYgcm91dGUuZGF0YS5hYykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhY0RhdGEgPSByb3V0ZS5kYXRhLmFjIHx8IHt9O1xuICAgIGNvbnN0IHsgaXNSb2xlID0gZmFsc2UsIGFjLCBhY0FueSwgYWNlLCBhY2VBbnksIHJlZGlyZWN0VG8gfSA9IGFjRGF0YTtcbiAgICBpZiAoW2FjLCBhY0FueSwgYWNlLCBhY2VBbnldLmZpbHRlcihzID0+ICEhcykubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS5lcnJvcihgW0BiaXhpL2FjXSDlkIzkuIDkuKrot6/nlLHlj6rog73kvb/nlKggWydhYycsICdhY0FueScsICdhY2UnLCAnYWNlQW55J10g5Lit5LiA5p2h6KeE5YiZYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBoYXNQZXJtaXNzaW9uID0gZmFsc2U7XG4gICAgaWYgKGFjKSB7XG4gICAgICBoYXNQZXJtaXNzaW9uID0gdGhpcy5hY1NlcnZpY2UuYWMoYWMsIHsgaXNSb2xlIH0pO1xuICAgIH1cbiAgICBpZiAoYWNBbnkpIHtcbiAgICAgIGhhc1Blcm1pc3Npb24gPSB0aGlzLmFjU2VydmljZS5hY0FueShhY0FueSwgeyBpc1JvbGUgfSk7XG4gICAgfVxuICAgIGlmIChhY2UpIHtcbiAgICAgIGhhc1Blcm1pc3Npb24gPSB0aGlzLmFjU2VydmljZS5hY2UoYWNlLCB7IGlzUm9sZSB9KTtcbiAgICB9XG4gICAgaWYgKGFjZUFueSkge1xuICAgICAgaGFzUGVybWlzc2lvbiA9IHRoaXMuYWNTZXJ2aWNlLmFjZUFueShhY2VBbnksIHsgaXNSb2xlIH0pO1xuICAgIH1cbiAgICBpZiAoaGFzUGVybWlzc2lvbikgcmV0dXJuIGhhc1Blcm1pc3Npb247XG4gICAgaWYgKHJlZGlyZWN0VG8pIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbQGJpeGkvYWNdIOayoeaciei3r+eUseiuv+mXruadg+mZkO+8jOmHjeWumuWQkeiHsyAtPiAke3JlZGlyZWN0VG99YCwgcm91dGUpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyZWRpcmVjdFRvKTtcbiAgICAgIHJldHVybiBoYXNQZXJtaXNzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtAYml4aS9hY10g5rKh5pyJ6Lev55Sx6K6/6Zeu5p2D6ZmQ77yM5peg6YeN5a6a5ZCR6Lev55SxYCwgcm91dGUpO1xuICAgICAgcmV0dXJuIGhhc1Blcm1pc3Npb247XG4gICAgfVxuICB9XG59XG4iXX0=