/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import { AppConfigService } from '../app-config/app-config.service'; import { B2bService } from '../_services/b2b.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "../_services/b2b.service"; import * as i3 from "../app-config/app-config.service"; var PermissionGuard = /** @class */ (function () { function PermissionGuard(router, route, dataservice, appConfigService) { this.router = router; this.route = route; this.dataservice = dataservice; this.appConfigService = appConfigService; this.config = appConfigService.getConfig(); } /** * @param {?} next * @param {?} state * @return {?} */ PermissionGuard.prototype.canActivate = /** * @param {?} next * @param {?} state * @return {?} */ function (next, state) { console.log(next.queryParams); /** @type {?} */ var params = next.queryParams; if (params["token"]) { sessionStorage.setItem('token', params["token"]); // token = params.token return this.getPermission(next); } else if (params["token"] === '') { return false; } else { /** @type {?} */ var token = sessionStorage.getItem('token'); if (token) { return this.getPermission(next); } else { return false; } } // const path = this.getUrlPath(next); // let configData = null; // configData = this.getConfigByUrl(path); // if (configData) { // if (this.dataservice.isCheckGuard(configData.role)) { // return true; // } // else { return false; } // } else { return true; } }; /** * @param {?} next * @return {?} */ PermissionGuard.prototype.getPermission = /** * @param {?} next * @return {?} */ function (next) { return tslib_1.__awaiter(this, void 0, void 0, function () { var verifyToken, path, configData, __resultData; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.dataservice.verify()]; case 1: verifyToken = _a.sent(); console.log("verifyToken", verifyToken, verifyToken['resultCode'] === '40100'); if (verifyToken['resultCode'] == '20000') { path = this.getUrlPath(next); configData = null; configData = this.getConfigByUrl(path); console.log('configData ', configData); if (configData) { if (this.dataservice.isCheckGuardRoutePath(configData.routingPath) || configData.routingPath === '') { console.log('isCheckGuardRoutePath ', true); return [2 /*return*/, true]; } else return [2 /*return*/, false]; } else return [2 /*return*/, true]; } else if (verifyToken['resultCode'] === '40100') { __resultData = verifyToken['resultData']; this.checkSession(__resultData.userMessage); return [2 /*return*/, false]; } else { return [2 /*return*/, false]; } return [2 /*return*/]; } }); }); }; /** * @param {?} userMessage * @return {?} */ PermissionGuard.prototype.checkSession = /** * @param {?} userMessage * @return {?} */ function (userMessage) { console.log('checkSession'); /** @type {?} */ var token = sessionStorage.getItem('token'); window.parent.postMessage(JSON.stringify({ command: "checkSession", message: token, userMessage: userMessage || 'Unknow' }), '*'); console.log('checkSession', JSON.stringify({ command: "checkSession", message: token, userMessage: userMessage || 'Unknow' })); }; /** * @param {?} url * @return {?} */ PermissionGuard.prototype.getUrlPath = /** * @param {?} url * @return {?} */ function (url) { console.log('path ', url.routeConfig.path); return url.routeConfig.path; }; /** * @param {?} path * @return {?} */ PermissionGuard.prototype.getConfigByUrl = /** * @param {?} path * @return {?} */ function (path) { var e_1, _a; /** @type {?} */ var permissionConfig = this.config.permission; /** @type {?} */ var permissionData = null; try { for (var permissionConfig_1 = tslib_1.__values(permissionConfig), permissionConfig_1_1 = permissionConfig_1.next(); !permissionConfig_1_1.done; permissionConfig_1_1 = permissionConfig_1.next()) { var data = permissionConfig_1_1.value; if (path == data.routingPath) { permissionData = data; break; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (permissionConfig_1_1 && !permissionConfig_1_1.done && (_a = permissionConfig_1.return)) _a.call(permissionConfig_1); } finally { if (e_1) throw e_1.error; } } console.log('Data ', permissionData); return permissionData; }; PermissionGuard.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ PermissionGuard.ctorParameters = function () { return [ { type: Router }, { type: ActivatedRoute }, { type: B2bService }, { type: AppConfigService } ]; }; /** @nocollapse */ PermissionGuard.ngInjectableDef = i0.defineInjectable({ factory: function PermissionGuard_Factory() { return new PermissionGuard(i0.inject(i1.Router), i0.inject(i1.ActivatedRoute), i0.inject(i2.B2bService), i0.inject(i3.AppConfigService)); }, token: PermissionGuard, providedIn: "root" }); return PermissionGuard; }()); export { PermissionGuard }; if (false) { /** @type {?} */ PermissionGuard.prototype.config; /** @type {?} */ PermissionGuard.prototype.router; /** @type {?} */ PermissionGuard.prototype.route; /** @type {?} */ PermissionGuard.prototype.dataservice; /** @type {?} */ PermissionGuard.prototype.appConfigService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9fZ3VhcmQvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNILE1BQU0sRUFFTixjQUFjLEVBR2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7SUFPaEQseUJBQW1CLE1BQWMsRUFBVSxLQUFxQixFQUFVLFdBQXVCLEVBQVUsZ0JBQWtDO1FBQTFILFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN6SSxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO0tBQzlDOzs7Ozs7SUFFRCxxQ0FBVzs7Ozs7SUFBWCxVQUFZLElBQTRCLEVBQzVCLEtBQTBCO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOztRQUM5QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzlCLElBQUksTUFBTSxXQUFRO1lBQ2QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxVQUFPLENBQUM7O1lBRTlDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQzthQUFNLElBQUksTUFBTSxjQUFXLEVBQUUsRUFBRTtZQUM1QixPQUFPLEtBQUssQ0FBQztTQUNoQjthQUFNOztZQUNILElBQU0sS0FB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QkFBQSxpQkFBQSxnQkFBZ0IsQ0FBQSxrREFBQSxnRkFBQztnQkFBN0IsSUFBSSxJQUFJLDZCQUFBO2dCQUNSLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQzFCLGNBQWMsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLE1BQU07aUJBQ1Q7YUFDSjs7Ozs7Ozs7O1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDckMsT0FBTyxjQUFjLENBQUM7S0FDekI7O2dCQWxHSixVQUFVLFNBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzs7O2dCQVhHLE1BQU07Z0JBRU4sY0FBYztnQkFNVixVQUFVO2dCQURWLGdCQUFnQjs7OzBCQVR4Qjs7U0FjYSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUm91dGVyLFxuICAgIENhbkFjdGl2YXRlLFxuICAgIEFjdGl2YXRlZFJvdXRlLFxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXBwQ29uZmlnU2VydmljZX0gZnJvbSAnLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtCMmJTZXJ2aWNlfSBmcm9tICcuLi9fc2VydmljZXMvYjJiLnNlcnZpY2UnO1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gICAgY29uZmlnOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGRhdGFzZXJ2aWNlOiBCMmJTZXJ2aWNlLCBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBhcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuICAgIH1cblxuICAgIGNhbkFjdGl2YXRlKG5leHQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgICAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBhbnkge1xuICAgICAgICBjb25zb2xlLmxvZyhuZXh0LnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5leHQucXVlcnlQYXJhbXM7XG4gICAgICAgIGlmIChwYXJhbXMudG9rZW4pIHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3Rva2VuJywgcGFyYW1zLnRva2VuKTtcbiAgICAgICAgICAgIC8vIHRva2VuID0gcGFyYW1zLnRva2VuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9uKG5leHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy50b2tlbiA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKTtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb24obmV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zdCBwYXRoID0gdGhpcy5nZXRVcmxQYXRoKG5leHQpO1xuICAgICAgICAvLyBsZXQgY29uZmlnRGF0YSA9IG51bGw7XG4gICAgICAgIC8vIGNvbmZpZ0RhdGEgPSB0aGlzLmdldENvbmZpZ0J5VXJsKHBhdGgpO1xuICAgICAgICAvLyBpZiAoY29uZmlnRGF0YSkge1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMuZGF0YXNlcnZpY2UuaXNDaGVja0d1YXJkKGNvbmZpZ0RhdGEucm9sZSkpIHtcbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICAgIGVsc2UgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgLy8gfSBlbHNlIHsgcmV0dXJuIHRydWU7IH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXRQZXJtaXNzaW9uKG5leHQpIHtcblxuICAgICAgICBsZXQgdmVyaWZ5VG9rZW4gPSBhd2FpdCB0aGlzLmRhdGFzZXJ2aWNlLnZlcmlmeSgpO1xuICAgICAgICBjb25zb2xlLmxvZyhcInZlcmlmeVRva2VuXCIsdmVyaWZ5VG9rZW4gLHZlcmlmeVRva2VuWydyZXN1bHRDb2RlJ10gPT09ICc0MDEwMCcpO1xuICAgICAgICBpZiAodmVyaWZ5VG9rZW5bJ3Jlc3VsdENvZGUnXSA9PSAnMjAwMDAnKSB7XG4gICAgICAgICAgICAvLyB0aGlzLnN0b3JlLnRva2VuID0ge3Rva2VuOiB2ZXJpZnlUb2tlblsncmVzdWx0RGF0YSddfTtcbiAgICAgICAgICAgIGxldCBwYXRoID0gdGhpcy5nZXRVcmxQYXRoKG5leHQpO1xuICAgICAgICAgICAgbGV0IGNvbmZpZ0RhdGEgPSBudWxsO1xuICAgICAgICAgICAgY29uZmlnRGF0YSA9IHRoaXMuZ2V0Q29uZmlnQnlVcmwocGF0aCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY29uZmlnRGF0YSAnLCBjb25maWdEYXRhKTtcbiAgICAgICAgICAgIGlmIChjb25maWdEYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXNlcnZpY2UuaXNDaGVja0d1YXJkUm91dGVQYXRoKGNvbmZpZ0RhdGEucm91dGluZ1BhdGgpIHx8IGNvbmZpZ0RhdGEucm91dGluZ1BhdGggPT09ICcnKXtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2lzQ2hlY2tHdWFyZFJvdXRlUGF0aCAnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHJldHVybiB0cnVlO1xuICAgICAgICB9ZWxzZSBpZih2ZXJpZnlUb2tlblsncmVzdWx0Q29kZSddID09PSAnNDAxMDAnKXtcbiAgICAgICAgICBsZXQgX19yZXN1bHREYXRhID0gdmVyaWZ5VG9rZW5bJ3Jlc3VsdERhdGEnXTtcbiAgICAgICAgICB0aGlzLmNoZWNrU2Vzc2lvbihfX3Jlc3VsdERhdGEudXNlck1lc3NhZ2UpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tTZXNzaW9uKHVzZXJNZXNzYWdlKXtcbiAgICAgIGNvbnNvbGUubG9nKCdjaGVja1Nlc3Npb24nKTtcbiAgICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKTtcbiAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvbW1hbmQ6XCJjaGVja1Nlc3Npb25cIixcbiAgICAgICAgICBtZXNzYWdlOiB0b2tlbixcbiAgICAgICAgICB1c2VyTWVzc2FnZTogdXNlck1lc3NhZ2UgfHwgJ1Vua25vdydcbiAgICAgIH0pLCAnKicpO1xuICAgICAgY29uc29sZS5sb2coJ2NoZWNrU2Vzc2lvbicsSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvbW1hbmQ6XCJjaGVja1Nlc3Npb25cIixcbiAgICAgICAgICBtZXNzYWdlOiB0b2tlbixcbiAgICAgICAgICB1c2VyTWVzc2FnZTogdXNlck1lc3NhZ2UgfHwgJ1Vua25vdydcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBnZXRVcmxQYXRoKHVybCkge1xuICAgICAgICBjb25zb2xlLmxvZygncGF0aCAnLCB1cmwucm91dGVDb25maWcucGF0aCk7XG4gICAgICAgIHJldHVybiB1cmwucm91dGVDb25maWcucGF0aDtcbiAgICB9XG5cbiAgICBnZXRDb25maWdCeVVybChwYXRoKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25Db25maWcgPSB0aGlzLmNvbmZpZy5wZXJtaXNzaW9uO1xuICAgICAgICBsZXQgcGVybWlzc2lvbkRhdGEgPSBudWxsO1xuICAgICAgICBmb3IobGV0IGRhdGEgb2YgcGVybWlzc2lvbkNvbmZpZyl7XG4gICAgICAgICAgICBpZiAocGF0aCA9PSBkYXRhLnJvdXRpbmdQYXRoKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbkRhdGEgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdEYXRhICcsIHBlcm1pc3Npb25EYXRhKTtcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25EYXRhO1xuICAgIH1cblxuXG59XG4iXX0=