vix-ui
Version:
76 lines • 6.46 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
*/
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;
}
if (!this.auth.getSessionToken()) { // Renew the session token
// Renew the session token
/** @type {?} */
const session = yield this.auth.getSession();
this.auth.setSessionToken(session.id);
}
/** @type {?} */
const currentUserGroups = yield this.auth.getLoginUserGroups();
/** @type {?} */
const 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 }
];
VixAuthGuard.ctorParameters = () => [
{ type: VixAuthService },
{ type: AuthConfigService },
{ type: Router }
];
if (false) {
/** @type {?} */
VixAuthGuard.prototype.auth;
/** @type {?} */
VixAuthGuard.prototype.authConfig;
/** @type {?} */
VixAuthGuard.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdml4LXVpLyIsInNvdXJjZXMiOlsidml4LWF1dGgvYXV0aC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBUTFELE1BQU07Ozs7OztJQUVKLFlBQW9CLElBQW9CLEVBQ3BCLFVBQTZCLEVBQzdCLE1BQWM7UUFGZCxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ2xDLENBQUM7Ozs7Ozs7O0lBTUssV0FBVyxDQUFDLEtBQTZCLEVBQzdCLEtBQTBCOztZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN4QixLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSwwQkFBMEI7OztzQkFDdEQsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2Qzs7a0JBQ0ssaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFOztrQkFDeEQsYUFBYSxHQUFHLG1CQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQVk7WUFDdEQsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxFQUFFO2dCQUNsRSxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDckUsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FBQTs7O1lBakNGLFVBQVU7OztZQVJGLGNBQWM7WUFDZCxpQkFBaUI7WUFGb0IsTUFBTTs7OztJQVl0Qyw0QkFBNEI7O0lBQzVCLGtDQUFxQzs7SUFDckMsOEJBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBWaXhBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLWNvbmZpZy5zZXJ2aWNlJztcblxuXG4vKipcbiAqIEF1dGggZ3VhcmQgd2lsbCBjaGVjayB1c2VyIGdyb3VwcyBhbmQgYXBwIHJlcXVpcmVkIGdyb3VwcyBhbmRcbiAqIGp1ZGdlIHVzZXIgY2FuIHZpZXcgdGhlIHJvdXRlIG9yIG5vdFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVml4QXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogVml4QXV0aFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXV0aENvbmZpZzogQXV0aENvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb21wYXJlIHVzZXIgZ3JvdXBzIGFuZCBhcHAgcmVxdWlyZWQgZ3JvdXBzIGJ5IFVzZXJHcm91cHMuaGFzUGVybWlzc2lvbigpXG4gICAqIGNhbkFjdGl2ZSB3aWxsIGNhY2hlIHRoZSB1c2VyIGdyb3VwcyBpbmZvcm1hdGlvbiBieSAxIGhvdXIuXG4gICAqL1xuICBhc3luYyBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICBjb25zb2xlLmxvZygnaW4gYXV0aGd1YXJkJyk7XG4gICAgaWYgKCF0aGlzLmF1dGguaXNMb2dpbigpKSB7XG4gICAgICBhbGVydCgnUGxlYXNlIGxvZ2luIGZpcnN0LicpO1xuICAgICAgdGhpcy5hdXRoLm5hdmlnYXRlVG9Mb2dpblBhZ2UoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmF1dGguZ2V0U2Vzc2lvblRva2VuKCkpIHsgLy8gUmVuZXcgdGhlIHNlc3Npb24gdG9rZW5cbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCB0aGlzLmF1dGguZ2V0U2Vzc2lvbigpO1xuICAgICAgdGhpcy5hdXRoLnNldFNlc3Npb25Ub2tlbihzZXNzaW9uLmlkKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFVzZXJHcm91cHMgPSBhd2FpdCB0aGlzLmF1dGguZ2V0TG9naW5Vc2VyR3JvdXBzKCk7XG4gICAgY29uc3QgcmVxdWlyZUdyb3VwcyA9IHJvdXRlLmRhdGFbJ2dyb3VwcyddIGFzIHN0cmluZ1tdO1xuICAgIGlmIChWaXhBdXRoU2VydmljZS5oYXNQZXJtaXNzaW9uKGN1cnJlbnRVc2VyR3JvdXBzLCByZXF1aXJlR3JvdXBzKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFsZXJ0KCdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMuIFBsZWFzZSBjb250YWN0IHJlbmppZUB2aXNlbnplLmNvbScpO1xuICAgIC8vIHRoaXMuYXV0aC5uYXZpZ2F0ZVRvTG9naW5QYWdlKCk7XG4gICAgdGhpcy5hdXRoLm5hdmlnYXRlVG9SZWRpcmVjdFBhZ2UoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==