mtl-js-sdk
Version:
ynf-fw-mtl-api
81 lines (73 loc) • 2.51 kB
JavaScript
/*
* @Author: wangyingliang@yonyou.com
* @Date: 2024-06-20 14:44:11
* @LastEditors: wangyingliang wangyingliang@yonyou.com
* @LastEditTime: 2025-09-02 20:28:08
* @FilePath: /mtl-api-project/src/common/permission.js
* @Description: 第三平台鉴权相关api
* Copyright (c) 2024 by Yonyou, All Rights Reserved.
*/
/**
* 获取鉴权参数
*/
function getConfigParams() {
// 从localstorage 中获取鉴权参数
const cacheParamStr = window.localStorage?.getItem("mtlConfigParams") || window.localStorage?.getItem("mtlWxConfigParams") || window.localStorage?.getItem("mtlDingtalkConfigParams")
let cacheParams = {}
try {
cacheParams = (typeof cacheParamStr === "string" && cacheParamStr !== "undefined") ? JSON.parse(cacheParamStr) : {}
} catch (error) {
console.warn("error = ", error);
}
let params = {}
// 处理加密数据情况
if (cacheParams && cacheParams.appInfo && cacheParams.appInfo !== "") {
params = decodeBase64(cacheParams.appInfo)
} else {
params = cacheParams
}
// 如果没有过去到参数, 增加URL获取补偿机制, 如果依然没有, 则返回空对象.
if (Object.keys(params).length === 0) {
const url = window.location.href
const urlParams = getUrlParams(url)
// 判断是否是加密
if (Object.prototype.hasOwnProperty.call(Object.keys(urlParams), "appInfo")) {
params = decodeBase64(urlParams.appInfo)
} else {
params = urlParams
}
}
return params
}
// 解码
function decodeBase64(jsonString) {
var temp = jsonString;
for (let i = 0; i < 3; i++) {
temp = window.atob(temp);
}
let obj = JSON.parse(temp)
return obj
}
// 编码
function encodeBase64(obj) {
// 将对象转成 json 字符串
var jsonString = JSON.stringify(obj);
var temp = jsonString;
for (let i = 0; i < 3; i++) {
temp = window.btoa(temp);
}
return temp;
}
/**
* @param {Object} url
* 使用 new URLSearchParams(url) 方法,返回一个 URLSearchParams 对象,
* 再调用 entries() 方法返回一个可迭代对象(Iterator)
* 使用 Object.fromEntries(iterable) 方法转化为普通对象
*/
function getUrlParams(url) {
let urlStr = url?.split('?')?.[1]?.split('#')?.[0]
const urlSearchParams = new URLSearchParams(urlStr)
const result = Object.fromEntries(urlSearchParams.entries())
return result
}
export default { getConfigParams }