permission.guard.js 14.4 KB
/**
 * @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";
export class PermissionGuard {
    /**
     * @param {?} router
     * @param {?} route
     * @param {?} dataservice
     * @param {?} appConfigService
     */
    constructor(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 {?}
     */
    canActivate(next, state) {
        console.log(next.queryParams);
        /** @type {?} */
        let 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 {?} */
            const 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 {?}
     */
    getPermission(next) {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            /** @type {?} */
            let verifyToken = yield this.dataservice.verify();
            console.log("verifyToken", verifyToken, verifyToken['resultCode'] === '40100');
            if (verifyToken['resultCode'] == '20000') {
                /** @type {?} */
                let path = this.getUrlPath(next);
                /** @type {?} */
                let 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 true;
                    }
                    else
                        return false;
                }
                else
                    return true;
            }
            else if (verifyToken['resultCode'] === '40100') {
                /** @type {?} */
                let __resultData = verifyToken['resultData'];
                this.checkSession(__resultData.userMessage);
                return false;
            }
            else {
                return false;
            }
        });
    }
    /**
     * @param {?} userMessage
     * @return {?}
     */
    checkSession(userMessage) {
        console.log('checkSession');
        /** @type {?} */
        const 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 {?}
     */
    getUrlPath(url) {
        console.log('path ', url.routeConfig.path);
        return url.routeConfig.path;
    }
    /**
     * @param {?} path
     * @return {?}
     */
    getConfigByUrl(path) {
        /** @type {?} */
        const permissionConfig = this.config.permission;
        /** @type {?} */
        let permissionData = null;
        for (let data of permissionConfig) {
            if (path == data.routingPath) {
                permissionData = data;
                break;
            }
        }
        console.log('Data ', permissionData);
        return permissionData;
    }
}
PermissionGuard.decorators = [
    { type: Injectable, args: [{
                providedIn: 'root'
            },] }
];
/** @nocollapse */
PermissionGuard.ctorParameters = () => [
    { 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" });
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9fZ3VhcmQvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNILE1BQU0sRUFFTixjQUFjLEVBR2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUlwRCxNQUFNOzs7Ozs7O0lBR0YsWUFBbUIsTUFBYyxFQUFVLEtBQXFCLEVBQVUsV0FBdUIsRUFBVSxnQkFBa0M7UUFBMUgsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3pJLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7S0FDOUM7Ozs7OztJQUVELFdBQVcsQ0FBQyxJQUE0QixFQUM1QixLQUEwQjtRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7UUFDOUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QixJQUFJLE1BQU0sV0FBUTtZQUNkLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sVUFBTyxDQUFDOztZQUU5QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7YUFBTSxJQUFJLE1BQU0sY0FBVyxFQUFFLEVBQUU7WUFDNUIsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTs7WUFDSCxNQUFN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QUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzFCLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDckMsT0FBTyxjQUFjLENBQUM7S0FDekI7OztZQWxHSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7Ozs7WUFYRyxNQUFNO1lBRU4sY0FBYztZQU1WLFVBQVU7WUFEVixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBSb3V0ZXIsXG4gICAgQ2FuQWN0aXZhdGUsXG4gICAgQWN0aXZhdGVkUm91dGUsXG4gICAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcHBDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0IyYlNlcnZpY2V9IGZyb20gJy4uL19zZXJ2aWNlcy9iMmIuc2VydmljZSc7XG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgICBjb25maWc6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgZGF0YXNlcnZpY2U6IEIyYlNlcnZpY2UsIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgY2FuQWN0aXZhdGUobmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGFueSB7XG4gICAgICAgIGNvbnNvbGUubG9nKG5leHQucXVlcnlQYXJhbXMpO1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV4dC5xdWVyeVBhcmFtcztcbiAgICAgICAgaWYgKHBhcmFtcy50b2tlbikge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgndG9rZW4nLCBwYXJhbXMudG9rZW4pO1xuICAgICAgICAgICAgLy8gdG9rZW4gPSBwYXJhbXMudG9rZW5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb24obmV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnRva2VuID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b2tlbicpO1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbihuZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnN0IHBhdGggPSB0aGlzLmdldFVybFBhdGgobmV4dCk7XG4gICAgICAgIC8vIGxldCBjb25maWdEYXRhID0gbnVsbDtcbiAgICAgICAgLy8gY29uZmlnRGF0YSA9IHRoaXMuZ2V0Q29uZmlnQnlVcmwocGF0aCk7XG4gICAgICAgIC8vIGlmIChjb25maWdEYXRhKSB7XG4gICAgICAgIC8vICAgICBpZiAodGhpcy5kYXRhc2VydmljZS5pc0NoZWNrR3VhcmQoY29uZmlnRGF0YS5yb2xlKSkge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgZWxzZSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICAvLyB9IGVsc2UgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldFBlcm1pc3Npb24obmV4dCkge1xuXG4gICAgICAgIGxldCB2ZXJpZnlUb2tlbiA9IGF3YWl0IHRoaXMuZGF0YXNlcnZpY2UudmVyaWZ5KCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwidmVyaWZ5VG9rZW5cIix2ZXJpZnlUb2tlbiAsdmVyaWZ5VG9rZW5bJ3Jlc3VsdENvZGUnXSA9PT0gJzQwMTAwJyk7XG4gICAgICAgIGlmICh2ZXJpZnlUb2tlblsncmVzdWx0Q29kZSddID09ICcyMDAwMCcpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuc3RvcmUudG9rZW4gPSB7dG9rZW46IHZlcmlmeVRva2VuWydyZXN1bHREYXRhJ119O1xuICAgICAgICAgICAgbGV0IHBhdGggPSB0aGlzLmdldFVybFBhdGgobmV4dCk7XG4gICAgICAgICAgICBsZXQgY29uZmlnRGF0YSA9IG51bGw7XG4gICAgICAgICAgICBjb25maWdEYXRhID0gdGhpcy5nZXRDb25maWdCeVVybChwYXRoKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb25maWdEYXRhICcsIGNvbmZpZ0RhdGEpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZ0RhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhc2VydmljZS5pc0NoZWNrR3VhcmRSb3V0ZVBhdGgoY29uZmlnRGF0YS5yb3V0aW5nUGF0aCkgfHwgY29uZmlnRGF0YS5yb3V0aW5nUGF0aCA9PT0gJycpe1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnaXNDaGVja0d1YXJkUm91dGVQYXRoICcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgcmV0dXJuIHRydWU7XG4gICAgICAgIH1lbHNlIGlmKHZlcmlmeVRva2VuWydyZXN1bHRDb2RlJ10gPT09ICc0MDEwMCcpe1xuICAgICAgICAgIGxldCBfX3Jlc3VsdERhdGEgPSB2ZXJpZnlUb2tlblsncmVzdWx0RGF0YSddO1xuICAgICAgICAgIHRoaXMuY2hlY2tTZXNzaW9uKF9fcmVzdWx0RGF0YS51c2VyTWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja1Nlc3Npb24odXNlck1lc3NhZ2Upe1xuICAgICAgY29uc29sZS5sb2coJ2NoZWNrU2Vzc2lvbicpO1xuICAgICAgY29uc3QgdG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b2tlbicpO1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgY29tbWFuZDpcImNoZWNrU2Vzc2lvblwiLFxuICAgICAgICAgIG1lc3NhZ2U6IHRva2VuLFxuICAgICAgICAgIHVzZXJNZXNzYWdlOiB1c2VyTWVzc2FnZSB8fCAnVW5rbm93J1xuICAgICAgfSksICcqJyk7XG4gICAgICBjb25zb2xlLmxvZygnY2hlY2tTZXNzaW9uJyxKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgY29tbWFuZDpcImNoZWNrU2Vzc2lvblwiLFxuICAgICAgICAgIG1lc3NhZ2U6IHRva2VuLFxuICAgICAgICAgIHVzZXJNZXNzYWdlOiB1c2VyTWVzc2FnZSB8fCAnVW5rbm93J1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGdldFVybFBhdGgodXJsKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdwYXRoICcsIHVybC5yb3V0ZUNvbmZpZy5wYXRoKTtcbiAgICAgICAgcmV0dXJuIHVybC5yb3V0ZUNvbmZpZy5wYXRoO1xuICAgIH1cblxuICAgIGdldENvbmZpZ0J5VXJsKHBhdGgpIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbkNvbmZpZyA9IHRoaXMuY29uZmlnLnBlcm1pc3Npb247XG4gICAgICAgIGxldCBwZXJtaXNzaW9uRGF0YSA9IG51bGw7XG4gICAgICAgIGZvcihsZXQgZGF0YSBvZiBwZXJtaXNzaW9uQ29uZmlnKXtcbiAgICAgICAgICAgIGlmIChwYXRoID09IGRhdGEucm91dGluZ1BhdGgpIHtcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uRGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ0RhdGEgJywgcGVybWlzc2lvbkRhdGEpO1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkRhdGE7XG4gICAgfVxuXG5cbn1cbiJdfQ==