mvue-toolkit
Version:
mvue project toolkit components
368 lines (345 loc) • 8.6 kB
JavaScript
/**
* 系统相关配置信息
*/
let http=require("axios");
let _=require("../libs/tools/lodash_loader").default;
let utils=require('../libs/utils').default;
if (!window.config) {
console.error("全局配置文件未引入,请检查项目代码");
}
let mergedConfig = _.extend({}, window.config);
function cachedConfigKey(){
return "_cachedConfig"+utils.getWebContext();
}
/**
* 根据配置项Key获取配置
* @param key 配置项Key
* @returns {*} 配置项的值
*/
function getConfigVal(key) {
return mergedConfig[key];
};
/**
* 加载服务端的配置
*/
function loadServerConfig() {
return new Promise(function(resolve, reject) {
let configUrl=getServerConfigUrl();
if(_.isEmpty(configUrl)){
resolve(mergedConfig);
return ;
}
http.get(getServerConfigUrl()).then(function ({data}) {
if(window.config.apiBaseUrl){
delete data["apiBaseUrl"];
}
mergedConfig=_.assign(mergedConfig, data);
resolve(mergedConfig);
}).catch(function (error) {
let msg=`配置加载信息失败:${error.config.url}`;
console.error(msg);
if(error.response.status==404){
console.error("请确认配置服务器地址是否正确,配置地址如下:" + getServerConfigUrl());
}else{
alert(msg);
}
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;
};
/**
* 获取指定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);
};
/**
* 授权码模式自定义tokenUrl
*/
mergedConfig.getOAuth2TokenUrl = function () {
var key = "oauth2.tokenUrl";
return getConfigVal(key);
};
/**
* 获取Token授权地址
* @returns {*}
*/
mergedConfig.getSSOAuthorizeUrl = function () {
var key = "oauth2.authorizeUrl";
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";
}
}
};
/**
* 登录地址
* @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;
}
/**
* 是否启用cookie,默认是启用
*/
mergedConfig.isCookiesEnabled = function() {
let enabled = getConfigVal('cookiesEnabled');
if (_.isUndefined(enabled) || _.isNull(enabled)) {
return true;
}
return enabled !== 'false' && !!enabled;
}
/**
*
* @returns {*}
*/
mergedConfig.getLocalUserInfoUrl = function () {
var key = "userInfoUrl";
return getConfigVal(key);
};
/**
* 获取服务器端代理验证授权码(accessCode)的地址
* @returns {*}
*/
mergedConfig.getAuthAccessCodeProxyUrl = function () {
var key = "oauth2.accessCode.proxyUrl";
return getConfigVal(key);
};
mergedConfig.getCookieName = function () {
let key = "cookie.name";
let cookieName= getConfigVal(key);
if(isEmpty(cookieName)){
cookieName="m_vue_session_id";
}
return cookieName;
};
/**
* 获取API服务器地址
* @returns {*}
*/
mergedConfig.getApiBaseUrl = function () {
let key = "apiBaseUrl";
let url = getConfigVal(key);
if (!isEmpty(url)) {
return url;
}
return getConfigVal("service.metad.api.endpoint");
};
/**
* 获取网关地址
* @returns {*}
*/
mergedConfig.getGatewayUrl = function () {
let key = "service.gateway.endpoint";
let url = getConfigVal(key);
if(isEmpty(url)){
url=this.getApiBaseUrl();
}
return url;
};
/**
* 获取查询当前用户信息的接口
* @returns {*}
*/
mergedConfig.getUserInfoUrl = function () {
var key = "service.uam.endpoint";
let url = getConfigVal(key);
if (url != null || url.length > 0) {
return url + "/userinfo";
}
//未配置时,默认使用oauth2的userInfo接口
url = 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==null|| typeof(obj)=="undefined"){
return true;
}
if(typeof(obj)=="string" && obj.length==0){
return true;
}
return false;
}
module.exports = mergedConfig;