vix-ui
Version:
91 lines • 7.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} 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
*/
var VixAuthGuard = /** @class */ (function () {
function VixAuthGuard(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.
*/
/**
* 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 {?}
*/
VixAuthGuard.prototype.canActivate = /**
* 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 {?}
*/
function (route, state) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var session, currentUserGroups, requireGroups;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
console.log('in authguard');
if (!this.auth.isLogin()) {
alert('Please login first.');
this.auth.navigateToLoginPage();
return [2 /*return*/, false];
}
if (!!this.auth.getSessionToken()) return [3 /*break*/, 2];
// Renew the session token
return [4 /*yield*/, this.auth.getSession()];
case 1:
session = _a.sent();
this.auth.setSessionToken(session.id);
_a.label = 2;
case 2: return [4 /*yield*/, this.auth.getLoginUserGroups()];
case 3:
currentUserGroups = _a.sent();
requireGroups = (/** @type {?} */ (route.data['groups']));
if (VixAuthService.hasPermission(currentUserGroups, requireGroups)) {
return [2 /*return*/, true];
}
alert('Insufficient permissions. Please contact renjie@visenze.com');
// this.auth.navigateToLoginPage();
this.auth.navigateToRedirectPage();
return [2 /*return*/, false];
}
});
});
};
VixAuthGuard.decorators = [
{ type: Injectable }
];
VixAuthGuard.ctorParameters = function () { return [
{ type: VixAuthService },
{ type: AuthConfigService },
{ type: Router }
]; };
return VixAuthGuard;
}());
export { VixAuthGuard };
if (false) {
/** @type {?} */
VixAuthGuard.prototype.auth;
/** @type {?} */
VixAuthGuard.prototype.authConfig;
/** @type {?} */
VixAuthGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdml4LXVpLyIsInNvdXJjZXMiOlsidml4LWF1dGgvYXV0aC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBTzFEO0lBR0Usc0JBQW9CLElBQW9CLEVBQ3BCLFVBQTZCLEVBQzdCLE1BQWM7UUFGZCxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7Ozs7Ozs7O0lBQ0csa0NBQVc7Ozs7Ozs7SUFBakIsVUFBa0IsS0FBNkIsRUFDN0IsS0FBMEI7Ozs7Ozt3QkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDOzRCQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7NEJBQ2hDLHNCQUFPLEtBQUssRUFBQzt5QkFDZDs2QkFDRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQTVCLHdCQUE0Qjs7d0JBQ2QscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBQTs7d0JBQXRDLE9BQU8sR0FBRyxTQUE0Qjt3QkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzs0QkFFZCxxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUE7O3dCQUF4RCxpQkFBaUIsR0FBRyxTQUFvQzt3QkFDeEQsYUFBYSxHQUFHLG1CQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQVk7d0JBQ3RELElBQUksY0FBYyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsRUFBRTs0QkFDbEUsc0JBQU8sSUFBSSxFQUFDO3lCQUNiO3dCQUNELEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO3dCQUNyRSxtQ0FBbUM7d0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzt3QkFDbkMsc0JBQU8sS0FBSyxFQUFDOzs7O0tBQ2Q7O2dCQWpDRixVQUFVOzs7Z0JBUkYsY0FBYztnQkFDZCxpQkFBaUI7Z0JBRm9CLE1BQU07O0lBMkNwRCxtQkFBQztDQUFBLEFBbENELElBa0NDO1NBakNZLFlBQVk7OztJQUVYLDRCQUE0Qjs7SUFDNUIsa0NBQXFDOztJQUNyQyw4QkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFZpeEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2F1dGgtY29uZmlnLnNlcnZpY2UnO1xuXG5cbi8qKlxuICogQXV0aCBndWFyZCB3aWxsIGNoZWNrIHVzZXIgZ3JvdXBzIGFuZCBhcHAgcmVxdWlyZWQgZ3JvdXBzIGFuZFxuICoganVkZ2UgdXNlciBjYW4gdmlldyB0aGUgcm91dGUgb3Igbm90XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaXhBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoOiBWaXhBdXRoU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhdXRoQ29uZmlnOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhcmUgdXNlciBncm91cHMgYW5kIGFwcCByZXF1aXJlZCBncm91cHMgYnkgVXNlckdyb3Vwcy5oYXNQZXJtaXNzaW9uKClcbiAgICogY2FuQWN0aXZlIHdpbGwgY2FjaGUgdGhlIHVzZXIgZ3JvdXBzIGluZm9ybWF0aW9uIGJ5IDEgaG91ci5cbiAgICovXG4gIGFzeW5jIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIGNvbnNvbGUubG9nKCdpbiBhdXRoZ3VhcmQnKTtcbiAgICBpZiAoIXRoaXMuYXV0aC5pc0xvZ2luKCkpIHtcbiAgICAgIGFsZXJ0KCdQbGVhc2UgbG9naW4gZmlyc3QuJyk7XG4gICAgICB0aGlzLmF1dGgubmF2aWdhdGVUb0xvZ2luUGFnZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXV0aC5nZXRTZXNzaW9uVG9rZW4oKSkgeyAvLyBSZW5ldyB0aGUgc2Vzc2lvbiB0b2tlblxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IHRoaXMuYXV0aC5nZXRTZXNzaW9uKCk7XG4gICAgICB0aGlzLmF1dGguc2V0U2Vzc2lvblRva2VuKHNlc3Npb24uaWQpO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50VXNlckdyb3VwcyA9IGF3YWl0IHRoaXMuYXV0aC5nZXRMb2dpblVzZXJHcm91cHMoKTtcbiAgICBjb25zdCByZXF1aXJlR3JvdXBzID0gcm91dGUuZGF0YVsnZ3JvdXBzJ10gYXMgc3RyaW5nW107XG4gICAgaWYgKFZpeEF1dGhTZXJ2aWNlLmhhc1Blcm1pc3Npb24oY3VycmVudFVzZXJHcm91cHMsIHJlcXVpcmVHcm91cHMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYWxlcnQoJ0luc3VmZmljaWVudCBwZXJtaXNzaW9ucy4gUGxlYXNlIGNvbnRhY3QgcmVuamllQHZpc2VuemUuY29tJyk7XG4gICAgLy8gdGhpcy5hdXRoLm5hdmlnYXRlVG9Mb2dpblBhZ2UoKTtcbiAgICB0aGlzLmF1dGgubmF2aWdhdGVUb1JlZGlyZWN0UGFnZSgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19