@bixi/ac
Version:
111 lines • 8.79 kB
JavaScript
/**
* @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(`[/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(`[/ac] 没有路由访问权限,重定向至 -> ${redirectTo}`, route);
this.router.navigateByUrl(redirectTo);
return hasPermission;
}
else {
console.warn(`[/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=