cmp-mvue-toolkit
Version:
mvue project toolkit components
1,886 lines (1,531 loc) • 116 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["index"] = factory();
else
root["index"] = factory();
})(typeof self !== 'undefined' ? self : this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/test/dist";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 9);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_clone__ = __webpack_require__(10);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_clone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_clone__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_cloneDeep__ = __webpack_require__(11);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_cloneDeep___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_cloneDeep__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_endsWith__ = __webpack_require__(12);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_endsWith___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_endsWith__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_find__ = __webpack_require__(13);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_find___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_lodash_find__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_isEmpty__ = __webpack_require__(14);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_isEmpty___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash_isEmpty__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_lodash_merge__ = __webpack_require__(15);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_lodash_merge___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_lodash_merge__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_lodash_startsWith__ = __webpack_require__(16);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_lodash_startsWith___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_lodash_startsWith__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_lodash_includes__ = __webpack_require__(17);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_lodash_includes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_lodash_includes__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_lodash_each__ = __webpack_require__(18);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_lodash_each___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_lodash_each__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_lodash_isFunction__ = __webpack_require__(19);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_lodash_isFunction___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_lodash_isFunction__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_lodash_forEach__ = __webpack_require__(20);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_lodash_forEach___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_lodash_forEach__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_lodash_isNull__ = __webpack_require__(21);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_lodash_isNull___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_lodash_isNull__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_lodash_isString__ = __webpack_require__(22);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_lodash_isString___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12_lodash_isString__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_lodash_toSafeInteger__ = __webpack_require__(23);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_lodash_toSafeInteger___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_13_lodash_toSafeInteger__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_lodash_isUndefined__ = __webpack_require__(24);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_lodash_isUndefined___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_14_lodash_isUndefined__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_lodash_extend__ = __webpack_require__(25);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_lodash_extend___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_15_lodash_extend__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16_lodash_has__ = __webpack_require__(26);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16_lodash_has___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_16_lodash_has__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17_lodash_toNumber__ = __webpack_require__(27);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17_lodash_toNumber___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_17_lodash_toNumber__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18_lodash_isInteger__ = __webpack_require__(28);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18_lodash_isInteger___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_18_lodash_isInteger__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19_lodash_isFinite__ = __webpack_require__(29);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19_lodash_isFinite___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_19_lodash_isFinite__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20_lodash_isNil__ = __webpack_require__(30);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20_lodash_isNil___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_20_lodash_isNil__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21_lodash_isArray__ = __webpack_require__(31);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21_lodash_isArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_21_lodash_isArray__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22_lodash_uniqueId__ = __webpack_require__(32);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22_lodash_uniqueId___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_22_lodash_uniqueId__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23_lodash_assign__ = __webpack_require__(33);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23_lodash_assign___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_23_lodash_assign__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24_lodash_isEqual__ = __webpack_require__(34);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24_lodash_isEqual___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_24_lodash_isEqual__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25_lodash_now__ = __webpack_require__(35);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25_lodash_now___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_25_lodash_now__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26_lodash_forIn__ = __webpack_require__(36);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26_lodash_forIn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_26_lodash_forIn__);
/*
@desc: A modern JavaScript utility library delivering modularity, performance, & extras.
@detail: https://github.com/lodash/lodash
*/
var _lodash = {
clone: __WEBPACK_IMPORTED_MODULE_0_lodash_clone___default.a,
cloneDeep: __WEBPACK_IMPORTED_MODULE_1_lodash_cloneDeep___default.a,
endsWith: __WEBPACK_IMPORTED_MODULE_2_lodash_endsWith___default.a,
find: __WEBPACK_IMPORTED_MODULE_3_lodash_find___default.a,
isEmpty: __WEBPACK_IMPORTED_MODULE_4_lodash_isEmpty___default.a,
merge: __WEBPACK_IMPORTED_MODULE_5_lodash_merge___default.a,
startsWith: __WEBPACK_IMPORTED_MODULE_6_lodash_startsWith___default.a,
includes: __WEBPACK_IMPORTED_MODULE_7_lodash_includes___default.a,
each: __WEBPACK_IMPORTED_MODULE_8_lodash_each___default.a,
isFunction: __WEBPACK_IMPORTED_MODULE_9_lodash_isFunction___default.a,
forEach: __WEBPACK_IMPORTED_MODULE_10_lodash_forEach___default.a,
isNull: __WEBPACK_IMPORTED_MODULE_11_lodash_isNull___default.a,
isString: __WEBPACK_IMPORTED_MODULE_12_lodash_isString___default.a,
toSafeInteger: __WEBPACK_IMPORTED_MODULE_13_lodash_toSafeInteger___default.a,
isUndefined: __WEBPACK_IMPORTED_MODULE_14_lodash_isUndefined___default.a,
extend: __WEBPACK_IMPORTED_MODULE_15_lodash_extend___default.a,
has: __WEBPACK_IMPORTED_MODULE_16_lodash_has___default.a,
toNumber: __WEBPACK_IMPORTED_MODULE_17_lodash_toNumber___default.a,
isInteger: __WEBPACK_IMPORTED_MODULE_18_lodash_isInteger___default.a,
isNil: __WEBPACK_IMPORTED_MODULE_20_lodash_isNil___default.a,
isFinite: __WEBPACK_IMPORTED_MODULE_19_lodash_isFinite___default.a,
isArray: __WEBPACK_IMPORTED_MODULE_21_lodash_isArray___default.a,
uniqueId: __WEBPACK_IMPORTED_MODULE_22_lodash_uniqueId___default.a,
assign: __WEBPACK_IMPORTED_MODULE_23_lodash_assign___default.a,
isEqual: __WEBPACK_IMPORTED_MODULE_24_lodash_isEqual___default.a,
now: __WEBPACK_IMPORTED_MODULE_25_lodash_now___default.a,
forIn: __WEBPACK_IMPORTED_MODULE_26_lodash_forIn___default.a
};
/* harmony default export */ __webpack_exports__["default"] = (_lodash);
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/**
* 工具方法
* Created by tonyyls on 2016/10/28.
*/
var _ = __webpack_require__(0).default;
function getCurPos($textarea) {
var e = $textarea.get(0),
pos = e.value.length;
if (e.selectionStart) {
//FF
pos = e.selectionStart;
} else if (document.selection) {
//IE
var r = document.selection.createRange();
if (r == null) {
pos = e.value.length;
} else {
var re = e.createTextRange();
var rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
pos = rc.text.length;
}
}
return pos;
}
function setCurPos($textarea, pos) {
var e = $textarea.get(0);
e.focus();
if (e.setSelectionRange) {
e.setSelectionRange(pos, pos);
} else if (e.createTextRange) {
var range = e.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
} //在textarea的指定位置插入字符
function insertAtCursor($textarea, val) {
var $t = $textarea[0];
var startPos = getCurPos($textarea);
if (startPos === undefined) {
$t.value = $t.value + val;
} else {
$t.value = $t.value.substring(0, startPos) + val + $t.value.substring(startPos, $t.value.length);
}
setCurPos($textarea, startPos + val.length);
}
var utils = {
insertAtCursor: insertAtCursor,
appendParams: function appendParams(url, params) {
if (!url) {
return "";
}
if (!params || params.length < 1) {
return url + "";
}
var _url = url.indexOf("?") > -1 ? url + "&" : url + "?";
for (var i = 0; i < params.length; ++i) {
if (i == 0) {
_url += params[i].key + "=" + encodeURIComponent(params[i].value);
} else {
_url += "&" + params[i].key + "=" + encodeURIComponent(params[i].value);
}
}
return _url;
},
appendParam: function appendParam(url, paramName, paramVal) {
if (!paramName) {
return url + "";
}
if (paramVal == null || typeof paramVal == "undefined") {
paramVal = "";
}
var _url = url.indexOf("?") > 0 ? url + "&" : url + "?";
_url += paramName + "=" + encodeURIComponent(paramVal);
return _url;
},
urlPattern: function urlPattern(url, paramName, paramVal) {
if (!paramName) {
return url + "";
}
if (paramVal == null || typeof paramVal == "undefined") {
paramVal = "";
}
url = url.replace(":" + paramName, paramVal);
return url;
},
//复制model的数据,清除更新对象不需要的属性
reduceModelForUpdate: function reduceModelForUpdate(model, moreFields) {
var copyModel = _.cloneDeep(model);
if (_.has(copyModel, "id")) {
delete copyModel.id;
}
if (_.has(copyModel, "createdBy")) {
delete copyModel.createdBy;
}
if (_.has(copyModel, "createdAt")) {
delete copyModel.createdAt;
}
if (_.has(copyModel, "updatedBy")) {
delete copyModel.updatedBy;
}
if (_.has(copyModel, "updatedAt")) {
delete copyModel.updatedAt;
}
if (_.isString(moreFields) && _.has(copyModel, moreFields)) {
delete copyModel[moreFields];
} else if (_.isArray(moreFields)) {
_(moreFields).forEach(function (item) {
if (_.has(copyModel, item)) {
delete copyModel[item];
}
});
}
return copyModel;
},
//_this:当前vue实例
//_model:当前待验证的数据
smartValidate: function smartValidate(_this, _model, _validator, callback, failback) {
_this.changedQueue = _this.changedQueue || []; //如果数据变化,先往变化队列推一条数据
_this.changedQueue.push(true); //记录当前变化队列的长度
var length = _this.changedQueue.length;
var __validator = _validator || _this.$validator;
setTimeout(function () {
//再次计算变化队列的长度,如果和之前的长度一致则表示用户已经停止输入,可以做校验了;
//如果不一致说明用户正在快速输入暂时不做验证,等到用户停止输入了就继续验证
var _length = _this.changedQueue.length;
if (_length === length) {
_this.changedQueue = [];
__validator.validateAll(_model).then(function () {
_this.valid = true;
callback && callback();
}).catch(function () {
_this.valid = false;
failback && failback();
});
}
}, 500);
},
//_this:当前vue实例
//智能搜索包装器,在用户快速输入时先不查询,直到用户输入完毕再查询
smartSearch: function smartSearch(_this, callback, _changedQueueKey, _duration) {
utils.smartAction(_this, _changedQueueKey, callback, _duration);
},
//_this:当前vue实例
//_changedQueueKey:变化的队列key
//callback:执行的操作回调函数
//_duration:指定操作等待的时长毫秒为单位
//智能操作包装器,
smartAction: function smartAction(_this, _changedQueueKey, callback, _duration) {
var changedQueueKey = _changedQueueKey;
var duration = _duration || 500;
_this[changedQueueKey] = _this[changedQueueKey] || []; //如果数据变化,先往变化队列推一条数据
_this[changedQueueKey].push(true); //记录当前变化队列的长度
var length = _this[changedQueueKey].length;
setTimeout(function () {
//再次计算变化队列的长度,如果和之前的长度一致则表示等待时间到了,可以做相关操作了;
//如果不一致说明数据还在变化,等到数据不再持续变化了再继续执行操作
var _length = _this[changedQueueKey].length;
if (_length === length) {
_this[changedQueueKey] = [];
callback && callback();
}
}, duration);
},
randomString: function randomString(len) {
len = len || 32;
var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
/****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
var maxPos = $chars.length;
var pwd = '';
for (var i = 0; i < len; i++) {
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
},
camelToUnderscore: function camelToUnderscore(str) {
str = str.replace(/([A-Z])/g, "_$1").toLowerCase();
if (str[0] == '_') str = str.slice(1);
return str;
},
closeWindow: function closeWindow() {
if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1) {
window.location.href = "about:blank";
window.close();
} else {
window.opener = null;
window.open("", "_self");
window.close();
}
},
leapQueryValueEncode: function leapQueryValueEncode(value) {
//leap 框架查询值单引号需要转义
if (value) {
value = value + '';
value = value.replace(/'/g, '%27');
value = value.replace(/\(/g, '%28');
value = value.replace(/\)/g, '%29');
value = value.replace(/\[/g, '%5B');
value = value.replace(/\]/g, '%5D');
}
return value;
},
getMomentFormat: function getMomentFormat(format) {
//将iview组件日期的格式化串转为moment的格式化串
//iview:"yyyy-MM-dd HH:mm:ss" moment:"YYYY-MM-DD HH:mm:ss"
if (!format) {
return "YYYY-MM-DD HH:mm:ss";
}
return format.replace("yyyy", "YYYY").replace("dd", "DD");
},
/**
* 将userPermVal和operationPermVal求与,如果结果等于operationPermVal表示有权限,否则无权限
* @param {*} userPermVal 用户的权限,二进制对应的整数表示
* @param {*} operationPermVal 操作的权限,二进制对应的整数表示
*/
hasPerm: function hasPerm(userPermVal, operationPermVal) {
//如果数据没定义任何权限,那就不控制权限
if (!userPermVal) {
return true;
}
return (userPermVal & operationPermVal) === operationPermVal;
},
/** 快捷方法,判断当前用户是否对item数据的btn操作有权限
* @param {*} item 记录数据对象
* @param {*} btn 操作对象
*/
hasDataPerm: function hasDataPerm(item, btn) {
var userPermVal = item[utils.dataPermField]; //如果数据没定义任何权限,那就不控制权限
if (!userPermVal) {
return true;
}
var operationPermVal = btn[utils.dataPermField]; //如果未设置权限,则默认没有权限
if (!operationPermVal) {
return false;
}
return utils.hasPerm(userPermVal, operationPermVal);
},
dataPermField: "permVal",
permValues: {
"view": 1,
"create": 2,
"edit": 4,
"del": 8,
"publish": 16,
"manage": 32,
"changeOwner": 64
},
queryKeys: {
action: "_action",
hideSuiteNavbar: "_hideSuiteNavbar"
},
formActions: {
create: "create",
view: "view",
edit: "edit"
},
ignoreSpecialQuery: function ignoreSpecialQuery(query) {
var _query = _.cloneDeep(query);
_.forIn(utils.queryKeys, function (key) {
if (_.has(_query, key)) {
delete _query[key];
}
});
return _query;
},
getWebContext: function getWebContext() {
var webContext = window.location.pathname;
if (webContext.indexOf('/') > 1) {
webContext = webContext.substring(0, webContext.lastIndexOf('/'));
}
return webContext;
},
visitTree: function visitTree(tree, process, parent, indexOrKey) {
var _this2 = this;
if (_.isArray(tree)) {
_.forEach(tree, function (item, index) {
_this2.visitTree(item, process, parent, index);
});
}
process(tree, parent, indexOrKey);
if (tree.children) {
_.forEach(tree.children, function (item, key) {
_this2.visitTree(item, process, tree, key);
});
}
}
};
/* harmony default export */ __webpack_exports__["default"] = (utils);
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
/**
* 系统相关配置信息
*/
var http = __webpack_require__(3);
var store = __webpack_require__(5);
var _ = __webpack_require__(0).default;
var utils = __webpack_require__(1).default;
var localCachedConfig = {};
if (!window.config) {
console.error("全局配置文件未引入,请检查项目代码");
}
function cachedConfigKey() {
return "_cachedConfig" + utils.getWebContext();
}
/**
* 根据配置项Key获取配置
* @param key 配置项Key
* @returns {*} 配置项的值
*/
function getConfigVal(key) {
var cachedkey = cachedConfigKey();
var cachedConfig = store.get(cachedkey);
if (cachedConfig == null) {
if (localCachedConfig[cachedkey]) {
return localCachedConfig[cachedkey][key];
} else {
console.error("应用数据异常,请刷新页面重试。");
return;
}
}
return cachedConfig[key];
}
/**
* 加载服务端的配置
*/
function loadServerConfig() {
return new Promise(function (resolve, reject) {
var configUrl = getServerConfigUrl();
if (_.isEmpty(configUrl)) {
var cachedConfig = _.extend({}, window.config);
store.set(cachedConfigKey(), cachedConfig);
localCachedConfig[cachedConfigKey()] = cachedConfig;
resolve(cachedConfig);
return;
}
http.get(getServerConfigUrl()).then(function (_ref) {
var data = _ref.data;
if (window.config.apiBaseUrl) {
delete data["apiBaseUrl"];
}
var cachedConfig = _.extend({}, window.config, data);
store.set(cachedConfigKey(), cachedConfig);
localCachedConfig[cachedConfigKey()] = cachedConfig;
resolve(cachedConfig);
}).catch(function (error) {
console.error(error);
if (!error.response) {
alert("加载配置信息失败,地址如下:" + error.config.url);
}
if (error.response.status == 404) {
console.error("请确认配置服务器地址是否正确,配置地址如下:" + getServerConfigUrl());
}
reject(error);
});
});
}
/**
* 获取配置服务地址
* @returns {string}
*/
function getServerConfigUrl() {
if (!window.config) {
return null;
}
if (window.config.configUrl) {
return window.config.configUrl;
}
if (window.config.apiBaseUrl) {
return window.config.apiBaseUrl + "/web.json";
}
return null;
}
var mergedConfig = _.extend({}, window.config);
/**
* 获取指定key对应的配置项值
* @param key
* @returns {*}
*/
mergedConfig.getConfigVal = function (key) {
return getConfigVal(key);
};
/**
* 从服务端加载配置项,返回Promise对象
*/
mergedConfig.loadServerConfig = function () {
return loadServerConfig();
};
/**
* 获取SSO服务器地址
* @returns {*}
*/
mergedConfig.getSSOServerUrl = function () {
var key = "oauth2.serverUrl";
return getConfigVal(key);
};
/**
* 获取Token授权地址
* @returns {*}
*/
mergedConfig.getSSOAuthorizeUrl = function () {
var key = "oauth2.authorizeUrl";
return getConfigVal(key);
};
/**
* 获取Token检查地址
* @returns {*}
*/
mergedConfig.getSSOTokenUrl = function () {
var key = "oauth2.tokenUrl";
return getConfigVal(key);
};
/**
* 获取Token授权地址
* @returns {*}
*/
mergedConfig.getSSOLogoutUrl = function () {
var key = "oauth2.logoutUrl";
return getConfigVal(key);
};
/**
* 获取Token授权地址
* @returns {*}
*/
mergedConfig.getSSOUserinfoUrl = function () {
var key = "oauth2.userinfoUrl";
return getConfigVal(key);
};
/**
* 获取Token检查地址
* @returns {*}
*/
mergedConfig.getSSOTokenUrl = function () {
var key = "oauth2.tokenUrl";
return getConfigVal(key);
};
/**
* 获取Token授权地址
* @returns {*}
*/
mergedConfig.getSSOLogoutUrl = function () {
var key = "oauth2.logoutUrl";
return getConfigVal(key);
};
/**
* 获取Token授权地址
* @returns {*}
*/
mergedConfig.getSSOUserinfoUrl = function () {
var key = "oauth2.userinfoUrl";
return getConfigVal(key);
};
/**
* 获取SSO服务器版本号
* @returns {*}
*/
mergedConfig.getSSOVersion = function () {
var key = "oauth2.serverVersion";
return getConfigVal(key);
};
/**
* SSO中OAuth2的类型:implicit、accessCode、accessCodeProxy
* @returns {*}
*/
mergedConfig.getOAuth2FlowType = function () {
var key = "oauth2.flow";
var type = getConfigVal(key);
if (!isEmpty(type)) {
return type;
} //计算type的默认值
var authAccessCodeProxyUrl = this.getAuthAccessCodeProxyUrl();
if (authAccessCodeProxyUrl != null && authAccessCodeProxyUrl.length > 0) {
type = "accessCodeProxy";
} else {
var clientSecret = this.getClientSecret();
if (clientSecret != null && clientSecret.length > 0) {
type = "accessCode";
} else {
type = "implicit";
}
}
return type;
};
/**
* 登录地址
* @returns {*}
*/
mergedConfig.getLoginUrl = function () {
var key = "tplLoginUrl";
return getConfigVal(key);
};
/**
*
* @returns {*}
*/
mergedConfig.getLocalLoginUrl = function () {
var key = "loginUrl";
return getConfigVal(key);
};
mergedConfig.getLocalLogoutUrl = function () {
var key = "logoutUrl";
return getConfigVal(key);
};
/**
* 判断是否启用本地登录,oauth2.ssoServerUrl为空,并且loginUrl不为空,启用本地登录
* @returns {boolean}
*/
mergedConfig.isLocalLogin = function () {
var loginLoginUrl = this.getLocalLoginUrl();
var ssoServerUrl = this.getSSOServerUrl();
if (_.isEmpty(ssoServerUrl) && !_.isEmpty(loginLoginUrl)) {
return true;
}
return false;
};
/**
*
* @returns {*}
*/
mergedConfig.getLocalUserInfoUrl = function () {
var key = "userInfoUrl";
return getConfigVal(key);
};
/**
* 获取服务器端代理验证授权码(accessCode)的地址
* @returns {*}
*/
mergedConfig.getAuthAccessCodeProxyUrl = function () {
var key = "oauth2.accessCode.proxyUrl";
return getConfigVal(key);
};
/**
* 获取API服务器地址
* @returns {*}
*/
mergedConfig.getApiBaseUrl = function () {
var url = "";
var key = "apiBaseUrl";
url = getConfigVal(key);
if (!isEmpty(url)) {
return url;
}
return getConfigVal("service.metad.api.endpoint");
};
/**
* 获取网关地址
* @returns {*}
*/
mergedConfig.getGatewayUrl = function () {
var url = "";
var key = "service.gateway.endpoint";
url = getConfigVal(key);
if (isEmpty(url)) {
url = this.getApiBaseUrl();
}
return url;
};
/**
* 获取查询当前用户信息的接口
* @returns {*}
*/
mergedConfig.getUserInfoUrl = function () {
var url = "";
var key = "service.uam.endpoint";
url = getConfigVal(key);
if (url) {
return url + "/userinfo";
} //未配置时,默认使用oauth2的userInfo接口
return this.getSSOServerUrl() + "/oauth2/userinfo";
};
/**
* 获取客户端的ClientId
* @returns {*}
*/
mergedConfig.getClientId = function () {
var key = "oauth2.clientId";
return getConfigVal(key);
};
/**
* 获取客户端密钥
* @returns {*}
*/
mergedConfig.getClientSecret = function () {
var key = "oauth2.clientSecret";
return getConfigVal(key);
};
/**
* 获取元数据服务的地址,包括表单、视图、套件和项目等基本信息获取接口
* @returns {*}
*/
mergedConfig.getMetaserviceUrl = function () {
return getConfigVal("service.metabase.endpoint");
};
/**
* 获取上传下载的服务器地址
* @returns {*}
*/
mergedConfig.getUploadUrl = function () {
var key = "service.stream.endpoint";
return getConfigVal(key);
};
/**
* 导入导出工具等工具服务地址
* @returns {*}
*/
mergedConfig.getToolEndpoint = function () {
return getConfigVal("service.tool.endpoint");
};
/**
* 统一服务地址
* @returns {*}
*/
mergedConfig.getUumEndpoint = function () {
return getConfigVal("service.uum.endpoint");
};
/**
* link web程序根路径
*/
mergedConfig.getLinkWebEndpoint = function () {
return getConfigVal("service.linkweb.endpoint");
};
/**
* 用户api访问地址
* @returns {*}
*/
mergedConfig.getUserApiUrl = function () {
var url = getConfigVal("userApiUrl");
if (!isEmpty(url)) {
return url;
}
var base = this.getUumEndpoint();
if (isEmpty(base)) {
return 'user';
}
return base + "/user";
};
/**
* 部门api访问地址
* @returns {*}
*/
mergedConfig.getOrgApiUrl = function () {
var url = getConfigVal("orgApiUrl");
if (!isEmpty(url)) {
return url;
}
var base = this.getUumEndpoint();
if (isEmpty(base)) {
return 'organization';
}
return base + "/organization";
};
/**
* 发表api访问地址
* @returns {*}
*/
mergedConfig.getBlogApiUrl = function () {
return getConfigVal("service.blog.endpoint");
};
/** * 获取link的基础地址 */
mergedConfig.getLinkEndpoint = function () {
return getConfigVal("service.link.endpoint");
};
/**
* 获取元数据api接口地址
* @return {*}
*/
mergedConfig.getMetadApiEndpoint = function () {
return getConfigVal("service.metad.api.endpoint");
};
function isEmpty(obj) {
if (!obj) {
return true;
}
if (typeof obj == "string" && obj.length == 0) {
return true;
}
return false;
}
module.exports = mergedConfig;
/***/ }),
/* 3 */
/***/ (function(module, exports) {
module.exports = require("axios");
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/**
* 运行的vue上下文参数
*/
var context = {
vue: null
};
/* harmony default export */ __webpack_exports__["a"] = ({
init: function init(vue) {
context.vue = vue;
},
getContext: function getContext() {
return context;
},
getCurrentVue: function getCurrentVue() {
return context.vue;
}
});
/***/ }),
/* 5 */
/***/ (function(module, exports) {
module.exports = require("store2");
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator__ = __webpack_require__(37);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator__ = __webpack_require__(38);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ssoclient__ = __webpack_require__(7);
/**
* 当前会话
*/
var Cookies = __webpack_require__(41);
var store = __webpack_require__(5);
var _ = __webpack_require__(0).default;
var utils = __webpack_require__(1).default;
var AES = __webpack_require__(42);
var encUTF8 = __webpack_require__(43);
var sessionKeyPrefix = "_session_";
var sessionCookieKey = "m_vue_session_id";
var anonymousSession = {
sessionId: null,
loginTime: null,
expires: 0,
token: {
mode: "",
accessToken: null,
refreshToken: null,
expiresIn: 0
},
user: {
anonymous: true,
name: "匿名用户",
userId: ""
}
};
var session = _.extend({}, anonymousSession);
var events = {
onSignIn: [],
onSignOut: []
};
if (store.has(getSessionKey())) {
var storedSession = getStoredSession();
if (storedSession) {
session = storedSession;
}
}
function createLoginRouter(returnUrl) {
return {
path: '/login',
query: {
redirect: returnUrl
}
};
}
function isLoginAction(router) {
if (_.isEqual("/login", router.path)) {
return true;
}
return false;
}
function isSSOClientAction(router) {
if (_.isEqual("/ssoclient", router.path)) {
return true;
}
return false;
}
function onSSOCallback(callback) {
__WEBPACK_IMPORTED_MODULE_2__ssoclient__["a" /* default */].onSSOCallback(function (tokenInfo) {
signIn(tokenInfo);
if (callback) {
callback(tokenInfo);
}
});
}
function _refreshToken() {
var storeSession = getStoredSession();
if (storeSession && !_isLogin()) {
window.location.reload();
return;
}
if (!storeSession || session.refresh || _.now().valueOf() < storeSession.loginTime + 1200 * 1000) {
return;
}
console.log("refreshToken token,loginTime:" + new Date(storeSession.loginTime) + ",now:" + new Date(_.now().valueOf()));
session.refresh = true;
__WEBPACK_IMPORTED_MODULE_2__ssoclient__["a" /* default */].refreshToken(storeSession.token, function (tokenInfo) {
removeSession();
signIn(tokenInfo);
});
session.refresh = false;
}
/**
* 判断当前会话是否登录
* @returns {boolean}
*/
function _isLogin() {
var sessionId = Cookies.get(sessionCookieKey);
if (_.isEmpty(sessionId)) {
//||sessionId!=session.sessionId){
return false;
}
if (_.now().valueOf() > session.expires) {
removeSession();
return false;
}
return true;
}
function signIn(_x) {
return _signIn.apply(this, arguments);
}
function _signIn() {
_signIn = __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.mark(function _callee4(tokenInfo) {
var sessionId, storeSession, crypto, i, func;
return __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
//其它窗口已经登录,并且cookie值与store中的数据保存一致,丢弃该授权码,使用本地数据
sessionId = Cookies.get(sessionCookieKey);
storeSession = getStoredSession();
if (!(storeSession && storeSession.sessionId == sessionId)) {
_context4.next = 5;
break;
}
session = storeSession;
return _context4.abrupt("return", session);
case 5:
//登录
session.token = tokenInfo;
session.user = tokenInfo.user || _.assign({}, anonymousSession.user);
session.user["anonymous"] = false;
session.loginTime = _.now().valueOf();
session.sessionId = "session_id_" + session.loginTime;
session.refresh = false;
if (tokenInfo.expiresIn) {
session.expires = session.loginTime + tokenInfo.expiresIn * 1000 - 60000;
}
Cookies.set(sessionCookieKey, session.sessionId, {
path: utils.getWebContext()
});
Cookies.set(sessionCookieKey, session.sessionId, {
path: "/"
});
crypto = AES.encrypt(JSON.stringify(session), session.sessionId);
store.set(getSessionKey(), crypto.toString());
i = 0;
case 17:
if (!(i < events.onSignIn.length)) {
_context4.next = 24;
break;
}
func = events.onSignIn[i];
_context4.next = 21;
return func(session);
case 21:
i++;
_context4.next = 17;
break;
case 24:
return _context4.abrupt("return", session);
case 25:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return _signIn.apply(this, arguments);
}
function getStoredSession() {
var sessionId = Cookies.get(sessionCookieKey);
if (!sessionId) {
return null;
}
try {
var decrypt = AES.decrypt(store.get(getSessionKey()), sessionId);
session = JSON.parse(decrypt.toString(encUTF8));
return session;
} catch (ex) {
return null;
}
}
function signOut(_x2) {
return _signOut.apply(this, arguments);
}
function _signOut() {
_signOut = __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.mark(function _callee5(returnUrl) {
var token, i, func;
return __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
token = session.token;
removeSession();
if (_.isEmpty(returnUrl)) {
returnUrl = window.location.href;
}
i = 0;
case 4:
if (!(i < events.onSignOut.length)) {
_context5.next = 11;
break;
}
func = events.onSignOut[i];
_context5.next = 8;
return func(session);
case 8:
i++;
_context5.next = 4;
break;
case 11:
__WEBPACK_IMPORTED_MODULE_2__ssoclient__["a" /* default */].ssoLogout(returnUrl, token);
case 12:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return _signOut.apply(this, arguments);
}
function removeSession() {
session = _.extend({}, anonymousSession);
store.remove(getSessionKey());
Cookies.remove(sessionCookieKey, {
path: utils.getWebContext()
});
console.log("session logout!");
}
function getSessionKey() {
return sessionKeyPrefix; //+utils.getWebContext();
}
/* harmony default export */ __webpack_exports__["a"] = ({
isLogin: function isLogin() {
return _isLogin();
},
getToken: function getToken() {
if (this.hasToken()) {
return session.token.tokenId;
}
return null;
},
hasToken: function hasToken() {
if (_isLogin() && session.token.accessToken) {
return true;
}
return false;
},
doSignIn: function () {
var _doSignIn = __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.mark(function _callee(tokenInfo) {
return __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", signIn(tokenInfo));
case 1:
case "end":
return _context.stop();
}
}
}, _callee);
}));
function doSignIn(_x3) {
return _doSignIn.apply(this, arguments);
}
return doSignIn;
}(),
refreshToken: function () {
var _refreshToken2 = __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.mark(function _callee2() {
return __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", _refreshToken());
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
function refreshToken() {
return _refreshToken2.apply(this, arguments);
}
return refreshToken;
}(),
doLogout: function () {
var _doLogout = __WEBPACK_IMPORTED_MODULE_1__babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.mark(function _callee3(returnUrl) {
return __WEBPACK_IMPORTED_MODULE_0__babel_runtime_regenerator___default.a.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt("return", signOut(returnUrl));
case 1:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
function doLogout(_x4) {
return _doLogout.apply(this, arguments);
}
return doLogout;
}(),
doLogin: function doLogin(returnUrl) {
removeSession();
store.remove(getSessionKey());
return __WEBPACK_IMPORTED_MODULE_2__ssoclient__["a" /* default */].gotoLogin(returnUrl, session);
},
getCurrentUser: function getCurrentUser() {
return session.user;
},
doFilter: function doFilter(to, from, next) {
//因为to.matched会从父到子放置所有匹配的路由,所以从最后一个路由向上判断是否定义了requiresAuth就可以确定了
var len = to.matched.length;
var requiresAuth = false;
for (var i = len - 1; i >= 0; --i) {
var m = to.matched[i];
if (m.meta.requiresAuth) {
//路由配置指定了需要验证
requiresAuth = true;
break;
} else if (m.meta.requiresAuth === false) {
//路由配置指定了匿名
requiresAuth = false;
break;
}
}
if (requiresAuth) {
if (this.isLogin()) {
// 通过vuex state获取当前的token是否存在
next();
} else {
//中转
if (!session.currentRoute) {
session.currentRoute = to.name;
var nextTo = __WEBPACK_IMPORTED_MODULE_2__ssoclient__["a" /* default */].gotoLogin(to.fullPath, session);
if (nextTo) {
next(nextTo);
}
}
}
} else {
next();
}
},
onSignIn: function onSignIn(func) {
events.onSignIn.push(func);
},
onSignOut: function onSignOut(func) {
events.onSignOut.push(func);
}
});
/***/ }),
/* 7 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tools_lodash_loader__ = __webpack_require__(0);
/**
* SSO客户端
*/
var utils = __webpack_require__(1).default;
var Config = __webpack_require__(2);
var Base64 = __webpack_require__(39).Base64;
var http = __webpack_require__(3);
var qs = __webpack_require__(40);
/**
* 跳转到sso登录页面
*/
function _gotoLogin(returnUrl, session) {
var params = _resolveParams(window.location.href) || {};
var state = params["state"];
var domain = window.location.protocol + "//" + window.location.host;
if (window.location.port && domain.indexOf(window.location.port) < 0) domain += ":" + window.location.port;
if (state && state != "/") {
var lastChar = state.charAt(state.length - 1);
if (lastChar == "/") {
state = state.substring(0, state.length - 1);
}
if (lastChar == "#") {
state = state.substring(0, state.length - 1);
}
returnUrl = state;
}
var ssoclientUrl = domain;
ssoclientUrl += "/static/ssoclient.html?returnUrl=" + encodeURIComponent(returnUrl);
var url = gotoLoginUrl(ssoclientUrl);
url += "&raw_return_url=" + encodeURIComponent(returnUrl);
if (url.charAt(0) == "#") {
return {
path: url.substring(1)
};
}
if (parent && utils.getWebContext() != "/") {
console.log("reload parent,returnUrl:" + returnUrl);
parent.location.reload();
return;
}
window.location = url;
}
function gotoLoginUrl(ssoclientUrl) {
var url = "";
if (Config.isLocalLogin()) {
url = buildLoginUrlForLocal(ssoclientUrl);
if (!url) {
console.error('SSO基础地址为空');
return;
}
} else if (Config.getSSOVersion() == "v2") {
url = buildLoginUrlForV2(ssoclientUrl);
if (!url) {
console.error('SSO基础地址为空');
return;
}
} else {
url = buildLoginUrlForV3(ssoclientUrl);
if (!url) {
console.error('SSO基础地址为空');
return;
}
if (Config.getOAuth2FlowType() == "implicit") {
url += "&response_type=token";
} else if (Config.getOAuth2FlowType() == "accessCode") {
url += "&response_type=code";
} else {
url += "&response_type=" + encodeURIComponent("code id_token");
}
}
if (!url) {
alert("未配置配置地址");
throw "未配置配置地址";
}
return url;
}
function buildLoginUrlForLocal(returnUrl) {
var url = Config.getLocalLoginUrl();
if (!url) {
return null;
}
return url + "?return_url=" + encodeURIComponent(returnUrl);
}
function buildLoginUrlForV2(returnUrl) {
var url = Config.getSSOServerUrl();
if (!url) {
return null;
}
url += "/v2?openid.mode=checkid_setup&openid.ex.client_id=" + (Config.getClientId() || "clientId");
url += "&openid.return_to=" + encodeURIComponent(returnUrl);
return url;
}
function buildLoginUrlForV3(returnUrl) {
var url = Config.getSSOAuthorizeUrl();
if (!url) {
url = Config.getSSOServerUrl();
if (!url) {
return null;
}
url += "/oauth2/authorize";
}
if (url.charAt(0) == "#") {
returnUrl = returnUrl.substring(returnUrl.indexOf("#"));
}
url += "?client_id=" + Config.getClientId();
url += "&redirect_uri=" + encodeURIComponent(returnUrl);
url += "&logout_uri=" + encodeURIComponent(window.location.protocol + "//" + window.location.host + window.location.pathname + "?_d=" + new Date().valueOf() + "#/ssoclient?logout=1&_inframe=true");
return url;
}
/**
* 处理sso回调
*/
function _onSSOCallback(callback) {
if (Config.isLocalLogin()) {
return processCallbackLocal(callback);
}
if (Config.getSSOVersion() == "v2") {
return processCallbackForV2(callback);
}
return processCallbackForV3(callback);
}
/**
* 本地登录成功后的处理
* @param callback
* @returns {Promise<any>}
*/
function processCallbackLocal(callback) {
var url = Config.getLocalUserInfoUrl() + "?_=" + new Date().getTime();
return new Promise(function (resolve, reject) {
http.get(url).then(function (_ref) {
var data = _ref.data;
var tokenInfo = {
user: {},
mode: "local"
};
var user = __WEBPACK_IMPORTED_MODULE_0__tools_lodash_loader__["default"].assign({}, data, {
anonymous: false
});
tokenInfo["user"] = user;
if (callback) {
callback(tokenInfo);
}
resolve(tokenInfo);
}).catch(function (error) {
reject(null);
});
});
}
/**
* v2流程校验serviceticket,获取access_token
* @param callback
*/
function processCallbackForV2(callback) {
var params = _resolveParams(window.location.href) || {};
var ticket = params["openid.ex.service_ticket"];
var tokenUrl = Config.getSSOServerUrl() + "/v2";
var reqParam = {
"openid.mode": "check_authentication",
"openid.ex.client_id": Config.getClientId(),
"openid.ex.client_secret": Config.getClientSecret(),
"openid.ex.service_ticke": ticket,
"openid.ex.logout_url": window.location.href + "#/logout",
"openid.ex.get_oauth_access_token": "y"
};
http.post(tokenUrl, qs.stringify(reqParam), {
"responseType": "text"
}).then(function (_ref2) {
var data = _ref2.data;
var arrItems = data.replace(/\r/g, "").split("\\n");
var respMap = {};
__WEBPACK_IMPORTED_MODULE_0__tools_lodash_loader__["default"].forEach(arrItems, function (item, index) {
if (__WEBPACK_IMPORTED_MODULE_0__tools_lodash_loader__["default"].isEmpty(item)) {
return;
}
var entry = item.split(":");
if (entry.length != 2) {
return;
}
respMap[entry[0]] = entry[1];
});
if (respMap["mode"] != "ok") {
console.error("ticket " + ticket + " 无效,错误信息:" + respMap["error"]);
return;
}
var tokenInfo = {
accessToken: respMap["ex.oauth_access_token"],
identity: respMap["identity"],
expiresIn: token["ex.oauth_access_token_expires"],
refreshToken: token["ex.oauth_refresh_token"],
user: {
name: respMap["identity"],
userId: respMap["identity"]
},
mode: "v2"
};
if (callback) {
callback(tokenInfo);
}
}).catch(function (error) {
console.log(error.response.data);
});
}
/**
* v3版SSO回调 ,验证accessCode获取access_token
* @param callback
*/
function processCallbackForV3(callback) {
if (Config.getOAuth2FlowType() == "implicit") {
return onImplictFlow(callback);
} else {
return onAccessCodeFlow(callback);
}
}
/**
* 处理隐式流程
* @param callback
*/
function onImplictFlow(callback) {
var params = _resolveParams(window.location.href) || {};
var tokenInfo = {
accessToken: params["access_token"],
expiresIn: params["expires_in"],
state: params["state"],
mode: "v3",
modeMore: {
flowType: "implicit"
}
};
getUserInfo(tokenInfo).then(function (userInfo) {
if (callback) {
callback(tokenInfo);
}
});
}
function checkAccessCode(accessCode, callback) {
var tokenUrl = Config.getSSOTokenUrl();
var basicAuth = getClientAuth();
var heads = {
'Authorization': basicAuth
};
if (!tokenUrl) tokenUrl = Config.getSSOServerUrl() + "/oauth2/token";else {
heads["Content-Type"] = "application/x-www-form-urlencoded";
}
var reqParam = {
"grant_type": "authorization_code",
"code": accessCode,
"client_id": Config.getClientId(),
"client_secret": Config.getClientSecret(),
"redirect_uri": document.referrer.replace("&code=" + accessCode, "")
};
var result = 1;
http.post(tokenUrl, qs.stringify(reqParam), {
headers: heads
}).then(function (_ref3) {
var data = _ref3.data;
if (callback) {
callback(data);
}
}).catch(function (error) {
if (error.response && error.response.data) {
console.log(error.response.data);
alert("从‘统一认证中心系统’获取token异常,请联系统一认证中心相关人员,异常信息如下:" + JSON.stringify(error.response.data));
result = 0;
}
});
return result;
}
function getUserInfo(tokenInfo) {
//用户地址
var url = Config.getSSOUserinfoUrl();
var authorization = tokenInfo.tokenId;
if (!url) url = Config.getSSOServerUrl() + "/oauth2/userinfo";
if (url.indexOf("http") != 0) {
var domain = window.location.protocol + "//" + window.location.host;
if (window.location.port && domain.indexOf(window.location.port) < 0) domain += ":" + window.location.port;
if (url.indexOf("/") != 0) domain += "/";
url = domain + url;
}
if (url.indexOf("?") < 0) url += "?";
url += "_=" + new Date().getTime();
return new Promise(function (resolve, reject) {
http.get(url, {
"headers": {
"Authorization": "Bearer " + authorization
}
}).then(function (_ref4) {
var data = _ref4.data;