vix-ui
Version:
A set of essential UI modules for your Angular application in ViSenze
78 lines (77 loc) • 6.19 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { VixAuthService } from './auth.service';
import { AuthConfigService } from './auth-config.service';
/**
* Auth guard will check user groups and app required groups and
* judge user can view the route or not
*/
export class VixAuthGuard {
/**
* @param {?} auth
* @param {?} authConfig
* @param {?} router
*/
constructor(auth, authConfig, router) {
this.auth = auth;
this.authConfig = authConfig;
this.router = router;
}
/**
* compare user groups and app required groups by UserGroups.hasPermission()
* canActive will cache the user groups information by 1 hour.
*
* @param {?} route
* @param {?} state
* @return {?}
*/
canActivate(route, state) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
console.log('in authguard');
if (!this.auth.isLogin()) {
alert('Please login first.');
this.auth.navigateToLoginPage();
return false;
}
const /** @type {?} */ currentUserGroups = yield this.auth.getLoginUserGroups();
const /** @type {?} */ requireGroups = /** @type {?} */ (route.data['groups']);
if (VixAuthService.hasPermission(currentUserGroups, requireGroups)) {
return true;
}
alert('Insufficient permissions. Please contact renjie@visenze.com');
// this.auth.navigateToLoginPage();
this.auth.navigateToRedirectPage();
return false;
});
}
}
VixAuthGuard.decorators = [
{ type: Injectable },
];
/** @nocollapse */
VixAuthGuard.ctorParameters = () => [
{ type: VixAuthService, },
{ type: AuthConfigService, },
{ type: Router, },
];
function VixAuthGuard_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
VixAuthGuard.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
VixAuthGuard.ctorParameters;
/** @type {?} */
VixAuthGuard.prototype.auth;
/** @type {?} */
VixAuthGuard.prototype.authConfig;
/** @type {?} */
VixAuthGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdml4LXVpLyIsInNvdXJjZXMiOlsidml4LXNlcnZpY2VzL2F1dGgvc2VydmljZXMvYXV0aC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBUTFELE1BQU07Ozs7OztJQU9KLFlBQW9CLElBQW9CLEVBQ3BCLFlBQ0E7UUFGQSxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNwQixlQUFVLEdBQVYsVUFBVTtRQUNWLFdBQU0sR0FBTixNQUFNO0tBQ3pCOzs7Ozs7Ozs7SUFVSyxXQUFXLENBQUMsS0FBNkIsRUFDN0IsS0FBMEI7O1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekIsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNkO1lBQ0QsdUJBQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0QsdUJBQU0sYUFBYSxxQkFBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBYSxDQUFBLENBQUM7WUFDdkQsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDYjtZQUNELEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDOztZQUVyRSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQzs7S0FDZDs7O1lBdENGLFVBQVU7Ozs7WUFSRixjQUFjO1lBQ2QsaUJBQWlCO1lBRm9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFZpeEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2F1dGgtY29uZmlnLnNlcnZpY2UnO1xuXG5cbi8qKlxuICogQXV0aCBndWFyZCB3aWxsIGNoZWNrIHVzZXIgZ3JvdXBzIGFuZCBhcHAgcmVxdWlyZWQgZ3JvdXBzIGFuZFxuICoganVkZ2UgdXNlciBjYW4gdmlldyB0aGUgcm91dGUgb3Igbm90XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaXhBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhdXRoXG4gICAqIEBwYXJhbSBhdXRoQ29uZmlnXG4gICAqIEBwYXJhbSByb3V0ZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogVml4QXV0aFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXV0aENvbmZpZzogQXV0aENvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb21wYXJlIHVzZXIgZ3JvdXBzIGFuZCBhcHAgcmVxdWlyZWQgZ3JvdXBzIGJ5IFVzZXJHcm91cHMuaGFzUGVybWlzc2lvbigpXG4gICAqIGNhbkFjdGl2ZSB3aWxsIGNhY2hlIHRoZSB1c2VyIGdyb3VwcyBpbmZvcm1hdGlvbiBieSAxIGhvdXIuXG4gICAqXG4gICAqIEBwYXJhbSByb3V0ZVxuICAgKiBAcGFyYW0gc3RhdGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIGNvbnNvbGUubG9nKCdpbiBhdXRoZ3VhcmQnKTtcbiAgICBpZiAoIXRoaXMuYXV0aC5pc0xvZ2luKCkpIHtcbiAgICAgIGFsZXJ0KCdQbGVhc2UgbG9naW4gZmlyc3QuJyk7XG4gICAgICB0aGlzLmF1dGgubmF2aWdhdGVUb0xvZ2luUGFnZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50VXNlckdyb3VwcyA9IGF3YWl0IHRoaXMuYXV0aC5nZXRMb2dpblVzZXJHcm91cHMoKTtcbiAgICBjb25zdCByZXF1aXJlR3JvdXBzID0gcm91dGUuZGF0YVsnZ3JvdXBzJ10gYXMgc3RyaW5nW107XG4gICAgaWYgKFZpeEF1dGhTZXJ2aWNlLmhhc1Blcm1pc3Npb24oY3VycmVudFVzZXJHcm91cHMsIHJlcXVpcmVHcm91cHMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYWxlcnQoJ0luc3VmZmljaWVudCBwZXJtaXNzaW9ucy4gUGxlYXNlIGNvbnRhY3QgcmVuamllQHZpc2VuemUuY29tJyk7XG4gICAgLy8gdGhpcy5hdXRoLm5hdmlnYXRlVG9Mb2dpblBhZ2UoKTtcbiAgICB0aGlzLmF1dGgubmF2aWdhdGVUb1JlZGlyZWN0UGFnZSgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19