UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

81 lines (73 loc) 2.51 kB
/* * @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 }