login-authorization-v2 1.0.91 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +12 -1
- package/index.js +13 -1
- package/package.json +28 -27
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
17
17
|
|
|
18
18
|
"use strict";
|
|
19
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"init\": () => (/* binding */ init),\n/* harmony export */ \"getUserInfo\": () => (/* binding */ getUserInfo),\n/* harmony export */ \"getIdToken\": () => (/* binding */ getIdToken),\n/* harmony export */ \"setIdToken\": () => (/* binding */ setIdToken),\n/* harmony export */ \"getRefreshToken\": () => (/* binding */ getRefreshToken),\n/* harmony export */ \"setRefreshToken\": () => (/* binding */ setRefreshToken),\n/* harmony export */ \"clearLoginCookie\": () => (/* binding */ clearLoginCookie),\n/* harmony export */ \"refreshIdTokenTimer\": () => (/* binding */ refreshIdTokenTimer),\n/* harmony export */ \"logout\": () => (/* binding */ logout),\n/* harmony export */ \"setCookie\": () => (/* binding */ setCookie),\n/* harmony export */ \"getCookie\": () => (/* binding */ getCookie),\n/* harmony export */ \"getUrlParam\": () => (/* binding */ getUrlParam)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n\r\nlet tokenTimer = null;\r\nlet idTokenFront = null;\r\nlet idTokenBack = null;\r\nlet refreshTokenFront = null;\r\nlet refreshTokenBack = null;\r\nlet userRequestUrl = null;\r\nlet userLogoutUrl = null;\r\nlet tenantId = '';\r\nlet currentSystemType = '';\r\nlet menuLists = [];\r\nlet currentSystemName = '';\r\n// 获取、设置cookie\r\nfunction getCookie (c_name) {\r\n if (document.cookie.length > 0) {\r\n let c_start = document.cookie.indexOf(c_name + \"=\")\r\n if (c_start != -1) {\r\n c_start = c_start + c_name.length + 1\r\n let c_end = document.cookie.indexOf(\";\", c_start)\r\n if (c_end == -1) c_end = document.cookie.length\r\n return unescape(document.cookie.substring(c_start, c_end))\r\n }\r\n }\r\n return null\r\n}\r\nfunction setCookie (name, value, domain, path = '/', time = 30 * 24 * 60 * 60 * 1000) {\r\n if (value === undefined) return;\r\n let exp = new Date();\r\n exp.setTime(exp.getTime() + time);\r\n document.cookie = name + \"=\" + escape(value) + \";expires=\" + exp.toGMTString() + \";domain=\" + domain + \";path=\" + path;\r\n}\r\n// 获取url参数中的某个值\r\nfunction getUrlParam (urlStr) {\r\n var query = window.location.href.split('?')[1];\r\n var vars = query ? query.split(\"&\") : [];\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (pair[0] == urlStr) { return pair[1]; }\r\n }\r\n return null;\r\n}\r\n\r\nif (getCookie('idTokenFront')) {\r\n idTokenFront = getCookie('idTokenFront');\r\n}\r\nif (getCookie('idTokenBack')) {\r\n idTokenBack = getCookie('idTokenBack');\r\n}\r\nif (getCookie('refreshTokenFront')) {\r\n refreshTokenFront = getCookie('refreshTokenFront');\r\n}\r\nif (getCookie('refreshTokenBack')) {\r\n refreshTokenBack = getCookie('refreshTokenBack');\r\n}\r\n// 获取用户信息\r\nfunction getUserInfo () {\r\n if (idTokenBack) {\r\n return JSON.parse(atob(idTokenBack.split('.')[0]))\r\n } else {\r\n return null\r\n }\r\n}\r\n// 获取idToken\r\nfunction getIdToken () {\r\n if (idTokenFront && idTokenBack) {\r\n idTokenFront = getCookie('idTokenFront');\r\n idTokenBack = getCookie('idTokenBack');\r\n }\r\n return (idTokenFront && idTokenBack) ? (idTokenFront + '.' + idTokenBack) : null\r\n}\r\n// 设置idToken\r\nfunction setIdToken (value) {\r\n idTokenFront = value.split('.')[0] + '.' + value.split('.')[1];\r\n idTokenBack = value.split('.')[2];\r\n setCookie('idTokenFront', idTokenFront, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n setCookie('idTokenBack', idTokenBack, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n}\r\n// 获取refreshToken\r\nfunction getRefreshToken () {\r\n return (refreshTokenFront && refreshTokenBack) ? (refreshTokenFront + '.' + refreshTokenBack) : null\r\n}\r\n// 设置refreshToken\r\nfunction setRefreshToken (value) {\r\n refreshTokenFront = value.split('.')[0] + '.' + value.split('.')[1];\r\n refreshTokenBack = value.split('.')[2] + '.' + value.split('.')[3] + '.' + value.split('.')[4];\r\n setCookie('refreshTokenFront', refreshTokenFront, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n setCookie('refreshTokenBack', refreshTokenBack, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n}\r\n// 清空登录相关cookie\r\nfunction clearLoginCookie () {\r\n if (currentSystemType === getCookie('currentSystemType')) {\r\n setCookie('idTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('idTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n } else if (!getCookie('currentSystemType') || currentSystemName === 'commonLogin' || currentSystemName === 'App') {\r\n setCookie('idTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('idTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n }\r\n}\r\n// 定时刷新IdToken\r\nfunction refreshIdTokenTimer (time) {\r\n if (!getIdToken() || !getRefreshToken()) {\r\n return;\r\n }\r\n tokenTimer = setInterval(() => {\r\n axios__WEBPACK_IMPORTED_MODULE_0___default()({\r\n url: userRequestUrl + '/user-profile/refresh-token/refresh',\r\n method: 'post',\r\n data: {\r\n refreshToken: getRefreshToken()\r\n }\r\n }).then(res => {\r\n if (res.data.code === 200) {\r\n setIdToken(res.data.content.idToken);\r\n } else if (res.data.code === 500) {\r\n if (userLogoutUrl !== '' || userLogoutUrl !== undefined) {\r\n clearLoginCookie();\r\n window.location.href = userLogoutUrl;\r\n }\r\n }\r\n })\r\n }, time)\r\n}\r\n// 登出\r\nfunction logout () {\r\n return new Promise((resolve, reject) => {\r\n axios__WEBPACK_IMPORTED_MODULE_0___default()({\r\n url: userRequestUrl + '/user-profile/logout',\r\n method: 'post',\r\n data: {\r\n refreshToken: getRefreshToken()\r\n }\r\n }).then(res => {\r\n clearInterval(tokenTimer);\r\n clearLoginCookie();\r\n if (userLogoutUrl !== '' || userLogoutUrl !== undefined) {\r\n window.location.href = userLogoutUrl;\r\n }\r\n resolve(true)\r\n })\r\n })\r\n}\r\n// 无权限访问时弹窗显示\r\nfunction createDoalog(){\r\n let html = `<div id=\"confirm-container\" style=\"box-sizing:border-box;position:fixed;width:615px;height:145px;box-shadow: 0 0 2px 2px #eeeeee;border-radius: 5px;z-index: 10000000;display: block;left: 35%;padding:20px 20px;top:10px;font-size: 16px;\">\r\n <div id=\"href\" style=\"color: rgb(32,33,36);\"></div>\r\n <div style=\"margin: 10px 0 20px 0;color: rgb(32,33,36);font-size: 14px;\">You do not have access to the system.</div>\r\n <div style=\"display: flex;justify-content: flex-end;\">\r\n <button id=\"cancel\" style=\"padding: 8px 15px;background: #ffffff;color:rgb(26,115,232);border:1px solid #ccc;border-radius:5px;cursor: pointer;font-size:14px;\">Cancel</button>\r\n <button id=\"confirm\" style=\"padding: 8px 15px;background: rgb(26,115,232);color:#ffffff;border:none;border-radius:5px;margin-left: 10px;cursor: pointer;font-size:14px;\">Sign in to another ZERO account</button>\r\n </div>\r\n </div>`\r\n let confirmDialog=document.getElementsByTagName('body')[0];\r\n confirmDialog.innerHTML = '';\r\n confirmDialog.insertAdjacentHTML(\"beforeend\", html);\r\n document.getElementById('href').innerHTML = window.location.hostname;\r\n document.getElementById('confirm').onclick = confirms;\r\n document.getElementById('cancel').onclick = cancels;\r\n}\r\nfunction createDoalogMobile(){\r\n let html = `<div id=\"confirm-container\" style=\"box-sizing:border-box;position:fixed;width:97.6vw;height:145px;box-shadow: 0 0 2px 2px #eeeeee;border-radius: 5px;z-index: 10000000;display: block;left:0px;padding:20px 20px;top:4px;margin:0 4px;font-size: 16px;\">\r\n <div id=\"href\" style=\"color: rgb(32,33,36);\"></div>\r\n <div style=\"margin: 10px 0 20px 0;color: rgb(32,33,36);font-size: 14px;\">You do not have access to the system.</div>\r\n <div style=\"display: flex;justify-content: flex-end;\">\r\n <div style=\"display: flex;justify-content: flex-end;\">\r\n <button id=\"cancel\" style=\"padding: 8px 15px;background: #ffffff;color:rgb(26,115,232);border:1px solid #ccc;border-radius:5px;cursor: pointer;font-size:14px;\">Cancel</button>\r\n <button id=\"confirm\" style=\"padding: 8px 15px;background: rgb(26,115,232);color:#ffffff;border:none;border-radius:5px;margin-left: 10px;cursor: pointer;font-size:14px;\">Sign in to another ZERO account</button>\r\n </div>\r\n </div>\r\n </div>`\r\n let confirmDialog=document.getElementsByTagName('body')[0];\r\n confirmDialog.innerHTML = '';\r\n confirmDialog.insertAdjacentHTML(\"beforeend\", html);\r\n document.getElementById('href').innerHTML = window.location.hostname;\r\n document.getElementById('confirm').onclick = confirms;\r\n document.getElementById('cancel').onclick = cancels;\r\n}\r\nfunction confirms() {\r\n clearLoginCookie();\r\n document.getElementById('confirm-container').style.display = 'none';\r\n window.location.href = userLogoutUrl;\r\n}\r\nfunction cancels() {\r\n document.getElementById('confirm-container').style.display = 'none';\r\n window.location.href = 'about:blank';\r\n}\r\nfunction IsPC () {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\r\n 'Android',\r\n 'iPhone',\r\n 'SymbianOS',\r\n 'Windows Phone',\r\n 'iPad',\r\n 'iPod',\r\n ];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n// 获取可访问系统列表\r\nfunction systemLists (systemName, idToken) {\r\n return new Promise((resolve, reject) => {\r\n axios__WEBPACK_IMPORTED_MODULE_0___default()({\r\n url: userRequestUrl + '/session/current/servers',\r\n method: 'get',\r\n headers: {\r\n authorization: 'Bearer ' + idToken,\r\n 'X-tenant-id': tenantId ? tenantId : ''\r\n }\r\n }).then(res => {\r\n if (res.data.code === 200) {\r\n menuLists = res.data.content;\r\n if (!systemName) {\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n } else if (systemName === 'commonLogin') {\r\n resolve(true);\r\n } else if (menuLists.length === 0) {\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n } else {\r\n let hasAccess = false;\r\n menuLists.forEach(item => {\r\n if (systemName.toLowerCase() === item.groupName.toLowerCase()) {\r\n resolve(true);\r\n hasAccess = true;\r\n currentSystemType = item.staffEndpoint ? 'staff' : 'client';\r\n }\r\n })\r\n if (!hasAccess) {\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n }\r\n }\r\n } else {\r\n resolve(false);\r\n }\r\n }).catch(() => {\r\n resolve(true);\r\n })\r\n })\r\n}\r\n// init初始化\r\nasync function init (requestUrl, loginUrl, systemName, tenant, time = 1000 * 60 * 3) {\r\n tenantId = tenant ? tenant : '';\r\n userLogoutUrl = loginUrl;\r\n currentSystemName = systemName;\r\n return new Promise(async (resolve, reject) => {\r\n if (!getIdToken() || !getRefreshToken()) {\r\n resolve(false);\r\n }\r\n if (requestUrl) {\r\n userRequestUrl = requestUrl;\r\n refreshIdTokenTimer(time);\r\n if (systemName === 'App') {\r\n resolve(true);\r\n } else {\r\n let hasAuth = await systemLists(systemName, getIdToken());\r\n if (hasAuth) {\r\n resolve(true);\r\n } else {\r\n await logout();\r\n resolve(false);\r\n }\r\n }\r\n } else {\r\n alert('Not request url');\r\n reject();\r\n }\r\n })\r\n}\r\n\n\n//# sourceURL=webpack://login-authorization-v2/./index.js?");
|
|
19
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"init\": () => (/* binding */ init),\n/* harmony export */ \"getUserInfo\": () => (/* binding */ getUserInfo),\n/* harmony export */ \"getIdToken\": () => (/* binding */ getIdToken),\n/* harmony export */ \"setIdToken\": () => (/* binding */ setIdToken),\n/* harmony export */ \"getRefreshToken\": () => (/* binding */ getRefreshToken),\n/* harmony export */ \"setRefreshToken\": () => (/* binding */ setRefreshToken),\n/* harmony export */ \"clearLoginCookie\": () => (/* binding */ clearLoginCookie),\n/* harmony export */ \"refreshIdTokenTimer\": () => (/* binding */ refreshIdTokenTimer),\n/* harmony export */ \"logout\": () => (/* binding */ logout),\n/* harmony export */ \"setCookie\": () => (/* binding */ setCookie),\n/* harmony export */ \"getCookie\": () => (/* binding */ getCookie),\n/* harmony export */ \"getUrlParam\": () => (/* binding */ getUrlParam)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-base64 */ \"./node_modules/js-base64/base64.mjs\");\n\r\n\r\nlet tokenTimer = null;\r\nlet idTokenFront = null;\r\nlet idTokenBack = null;\r\nlet refreshTokenFront = null;\r\nlet refreshTokenBack = null;\r\nlet userRequestUrl = null;\r\nlet userLogoutUrl = null;\r\nlet tenantId = '';\r\nlet currentSystemType = '';\r\nlet menuLists = [];\r\nlet currentSystemName = '';\r\n// 获取、设置cookie\r\nfunction getCookie (c_name) {\r\n if (document.cookie.length > 0) {\r\n let c_start = document.cookie.indexOf(c_name + \"=\")\r\n if (c_start != -1) {\r\n c_start = c_start + c_name.length + 1\r\n let c_end = document.cookie.indexOf(\";\", c_start)\r\n if (c_end == -1) c_end = document.cookie.length\r\n return unescape(document.cookie.substring(c_start, c_end))\r\n }\r\n }\r\n return null\r\n}\r\nfunction setCookie (name, value, domain, path = '/', time = 30 * 24 * 60 * 60 * 1000) {\r\n if (value === undefined) return;\r\n let exp = new Date();\r\n exp.setTime(exp.getTime() + time);\r\n document.cookie = name + \"=\" + escape(value) + \";expires=\" + exp.toGMTString() + \";domain=\" + domain + \";path=\" + path;\r\n}\r\n// 获取url参数中的某个值\r\nfunction getUrlParam (urlStr) {\r\n var query = window.location.href.split('?')[1];\r\n var vars = query ? query.split(\"&\") : [];\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (pair[0] == urlStr) { return pair[1]; }\r\n }\r\n return null;\r\n}\r\n\r\nif (getCookie('idTokenFront')) {\r\n idTokenFront = getCookie('idTokenFront');\r\n}\r\nif (getCookie('idTokenBack')) {\r\n idTokenBack = getCookie('idTokenBack');\r\n}\r\nif (getCookie('refreshTokenFront')) {\r\n refreshTokenFront = getCookie('refreshTokenFront');\r\n}\r\nif (getCookie('refreshTokenBack')) {\r\n refreshTokenBack = getCookie('refreshTokenBack');\r\n}\r\n// 获取用户信息\r\nfunction getUserInfo () {\r\n if (idTokenBack) {\r\n return JSON.parse(atob(idTokenBack.split('.')[0]))\r\n } else {\r\n return null\r\n }\r\n}\r\n// 获取idToken\r\nfunction getIdToken () {\r\n if (idTokenFront && idTokenBack) {\r\n idTokenFront = getCookie('idTokenFront');\r\n idTokenBack = getCookie('idTokenBack');\r\n }\r\n return (idTokenFront && idTokenBack) ? (idTokenFront + '.' + idTokenBack) : null\r\n}\r\n// 设置idToken\r\nfunction setIdToken (value) {\r\n idTokenFront = value.split('.')[0] + '.' + value.split('.')[1];\r\n idTokenBack = value.split('.')[2];\r\n setCookie('idTokenFront', idTokenFront, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n setCookie('idTokenBack', idTokenBack, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n}\r\n// 获取refreshToken\r\nfunction getRefreshToken () {\r\n return (refreshTokenFront && refreshTokenBack) ? (refreshTokenFront + '.' + refreshTokenBack) : null\r\n}\r\n// 设置refreshToken\r\nfunction setRefreshToken (value) {\r\n refreshTokenFront = value.split('.')[0] + '.' + value.split('.')[1];\r\n refreshTokenBack = value.split('.')[2] + '.' + value.split('.')[3] + '.' + value.split('.')[4];\r\n setCookie('refreshTokenFront', refreshTokenFront, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n setCookie('refreshTokenBack', refreshTokenBack, window.location.hostname.substring(window.location.hostname.indexOf('.')));\r\n}\r\n// 清空登录相关cookie\r\nfunction clearLoginCookie () {\r\n if (currentSystemType === getCookie('currentSystemType')) {\r\n setCookie('idTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('idTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n } else if (!getCookie('currentSystemType') || currentSystemName === 'commonLogin' || currentSystemName === 'App') {\r\n setCookie('idTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('idTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenFront', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n setCookie('refreshTokenBack', null, window.location.hostname.substring(window.location.hostname.indexOf('.')), '/', -1);\r\n }\r\n}\r\n// 定时刷新IdToken\r\nfunction refreshIdTokenTimer (time) {\r\n if (!getIdToken() || !getRefreshToken()) {\r\n return;\r\n }\r\n tokenTimer = setInterval(() => {\r\n axios__WEBPACK_IMPORTED_MODULE_0___default()({\r\n url: userRequestUrl + '/user-profile/refresh-token/refresh',\r\n method: 'post',\r\n data: {\r\n refreshToken: getRefreshToken()\r\n }\r\n }).then(res => {\r\n if (res.data.code === 200) {\r\n try {\r\n const userInfo = JSON.parse(js_base64__WEBPACK_IMPORTED_MODULE_1__.Base64.decode(res.data.content.idToken.split('.')[1]))\r\n const groups = userInfo['cognito:groups'] || []\r\n if (groups.includes(currentSystemName)) {\r\n clearInterval(tokenTimer)\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n return\r\n }\r\n } catch (e) {\r\n console.warn(e)\r\n }\r\n setIdToken(res.data.content.idToken);\r\n } else if (res.data.code === 500) {\r\n if (userLogoutUrl !== '' || userLogoutUrl !== undefined) {\r\n clearLoginCookie();\r\n window.location.href = userLogoutUrl;\r\n }\r\n }\r\n })\r\n }, time)\r\n}\r\n// 登出\r\nfunction logout () {\r\n return new Promise((resolve, reject) => {\r\n axios__WEBPACK_IMPORTED_MODULE_0___default()({\r\n url: userRequestUrl + '/user-profile/logout',\r\n method: 'post',\r\n data: {\r\n refreshToken: getRefreshToken()\r\n }\r\n }).then(res => {\r\n clearInterval(tokenTimer);\r\n clearLoginCookie();\r\n if (userLogoutUrl !== '' || userLogoutUrl !== undefined) {\r\n window.location.href = userLogoutUrl;\r\n }\r\n resolve(true)\r\n })\r\n })\r\n}\r\n// 无权限访问时弹窗显示\r\nfunction createDoalog(){\r\n let html = `<div id=\"confirm-container\" style=\"box-sizing:border-box;position:fixed;width:615px;height:145px;box-shadow: 0 0 2px 2px #eeeeee;border-radius: 5px;z-index: 10000000;display: block;left: 35%;padding:20px 20px;top:10px;font-size: 16px;\">\r\n <div id=\"href\" style=\"color: rgb(32,33,36);\"></div>\r\n <div style=\"margin: 10px 0 20px 0;color: rgb(32,33,36);font-size: 14px;\">You do not have access to the system.</div>\r\n <div style=\"display: flex;justify-content: flex-end;\">\r\n <button id=\"cancel\" style=\"padding: 8px 15px;background: #ffffff;color:rgb(26,115,232);border:1px solid #ccc;border-radius:5px;cursor: pointer;font-size:14px;\">Cancel</button>\r\n <button id=\"confirm\" style=\"padding: 8px 15px;background: rgb(26,115,232);color:#ffffff;border:none;border-radius:5px;margin-left: 10px;cursor: pointer;font-size:14px;\">Sign in to another ZERO account</button>\r\n </div>\r\n </div>`\r\n let confirmDialog=document.getElementsByTagName('body')[0];\r\n confirmDialog.innerHTML = '';\r\n confirmDialog.insertAdjacentHTML(\"beforeend\", html);\r\n document.getElementById('href').innerHTML = window.location.hostname;\r\n document.getElementById('confirm').onclick = confirms;\r\n document.getElementById('cancel').onclick = cancels;\r\n}\r\nfunction createDoalogMobile(){\r\n let html = `<div id=\"confirm-container\" style=\"box-sizing:border-box;position:fixed;width:97.6vw;height:145px;box-shadow: 0 0 2px 2px #eeeeee;border-radius: 5px;z-index: 10000000;display: block;left:0px;padding:20px 20px;top:4px;margin:0 4px;font-size: 16px;\">\r\n <div id=\"href\" style=\"color: rgb(32,33,36);\"></div>\r\n <div style=\"margin: 10px 0 20px 0;color: rgb(32,33,36);font-size: 14px;\">You do not have access to the system.</div>\r\n <div style=\"display: flex;justify-content: flex-end;\">\r\n <div style=\"display: flex;justify-content: flex-end;\">\r\n <button id=\"cancel\" style=\"padding: 8px 15px;background: #ffffff;color:rgb(26,115,232);border:1px solid #ccc;border-radius:5px;cursor: pointer;font-size:14px;\">Cancel</button>\r\n <button id=\"confirm\" style=\"padding: 8px 15px;background: rgb(26,115,232);color:#ffffff;border:none;border-radius:5px;margin-left: 10px;cursor: pointer;font-size:14px;\">Sign in to another ZERO account</button>\r\n </div>\r\n </div>\r\n </div>`\r\n let confirmDialog=document.getElementsByTagName('body')[0];\r\n confirmDialog.innerHTML = '';\r\n confirmDialog.insertAdjacentHTML(\"beforeend\", html);\r\n document.getElementById('href').innerHTML = window.location.hostname;\r\n document.getElementById('confirm').onclick = confirms;\r\n document.getElementById('cancel').onclick = cancels;\r\n}\r\nfunction confirms() {\r\n clearLoginCookie();\r\n document.getElementById('confirm-container').style.display = 'none';\r\n window.location.href = userLogoutUrl;\r\n}\r\nfunction cancels() {\r\n document.getElementById('confirm-container').style.display = 'none';\r\n window.location.href = 'about:blank';\r\n}\r\nfunction IsPC () {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\r\n 'Android',\r\n 'iPhone',\r\n 'SymbianOS',\r\n 'Windows Phone',\r\n 'iPad',\r\n 'iPod',\r\n ];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n// 获取可访问系统列表\r\nfunction systemLists (systemName, idToken) {\r\n return new Promise((resolve, reject) => {\r\n axios__WEBPACK_IMPORTED_MODULE_0___default()({\r\n url: userRequestUrl + '/session/current/servers',\r\n method: 'get',\r\n headers: {\r\n authorization: 'Bearer ' + idToken,\r\n 'X-tenant-id': tenantId ? tenantId : ''\r\n }\r\n }).then(res => {\r\n if (res.data.code === 200) {\r\n menuLists = res.data.content;\r\n if (!systemName) {\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n } else if (systemName === 'commonLogin') {\r\n resolve(true);\r\n } else if (menuLists.length === 0) {\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n } else {\r\n let hasAccess = false;\r\n menuLists.forEach(item => {\r\n if (systemName.toLowerCase() === item.groupName.toLowerCase()) {\r\n resolve(true);\r\n hasAccess = true;\r\n currentSystemType = item.staffEndpoint ? 'staff' : 'client';\r\n }\r\n })\r\n if (!hasAccess) {\r\n IsPC() ? createDoalog() : createDoalogMobile()\r\n }\r\n }\r\n } else {\r\n resolve(false);\r\n }\r\n }).catch(() => {\r\n resolve(true);\r\n })\r\n })\r\n}\r\n// init初始化\r\nasync function init (requestUrl, loginUrl, systemName, tenant, time = 1000 * 60 * 3) {\r\n tenantId = tenant ? tenant : '';\r\n userLogoutUrl = loginUrl;\r\n currentSystemName = systemName;\r\n return new Promise(async (resolve, reject) => {\r\n if (!getIdToken() || !getRefreshToken()) {\r\n resolve(false);\r\n }\r\n if (requestUrl) {\r\n userRequestUrl = requestUrl;\r\n refreshIdTokenTimer(time);\r\n if (systemName === 'App') {\r\n resolve(true);\r\n } else {\r\n let hasAuth = await systemLists(systemName, getIdToken());\r\n if (hasAuth) {\r\n resolve(true);\r\n } else {\r\n await logout();\r\n resolve(false);\r\n }\r\n }\r\n } else {\r\n alert('Not request url');\r\n reject();\r\n }\r\n })\r\n}\r\n\r\n\n\n//# sourceURL=webpack://login-authorization-v2/./index.js?");
|
|
20
20
|
|
|
21
21
|
/***/ }),
|
|
22
22
|
|
|
@@ -335,6 +335,17 @@ eval("\n\nvar VERSION = (__webpack_require__(/*! ../env/data */ \"./node_modules
|
|
|
335
335
|
"use strict";
|
|
336
336
|
eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n\n\n//# sourceURL=webpack://login-authorization-v2/./node_modules/axios/lib/utils.js?");
|
|
337
337
|
|
|
338
|
+
/***/ }),
|
|
339
|
+
|
|
340
|
+
/***/ "./node_modules/js-base64/base64.mjs":
|
|
341
|
+
/*!*******************************************!*\
|
|
342
|
+
!*** ./node_modules/js-base64/base64.mjs ***!
|
|
343
|
+
\*******************************************/
|
|
344
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
345
|
+
|
|
346
|
+
"use strict";
|
|
347
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"version\": () => (/* binding */ version),\n/* harmony export */ \"VERSION\": () => (/* binding */ VERSION),\n/* harmony export */ \"atob\": () => (/* binding */ _atob),\n/* harmony export */ \"atobPolyfill\": () => (/* binding */ atobPolyfill),\n/* harmony export */ \"btoa\": () => (/* binding */ _btoa),\n/* harmony export */ \"btoaPolyfill\": () => (/* binding */ btoaPolyfill),\n/* harmony export */ \"fromBase64\": () => (/* binding */ decode),\n/* harmony export */ \"toBase64\": () => (/* binding */ encode),\n/* harmony export */ \"utob\": () => (/* binding */ utob),\n/* harmony export */ \"encode\": () => (/* binding */ encode),\n/* harmony export */ \"encodeURI\": () => (/* binding */ encodeURI),\n/* harmony export */ \"encodeURL\": () => (/* binding */ encodeURI),\n/* harmony export */ \"btou\": () => (/* binding */ btou),\n/* harmony export */ \"decode\": () => (/* binding */ decode),\n/* harmony export */ \"isValid\": () => (/* binding */ isValid),\n/* harmony export */ \"fromUint8Array\": () => (/* binding */ fromUint8Array),\n/* harmony export */ \"toUint8Array\": () => (/* binding */ toUint8Array),\n/* harmony export */ \"extendString\": () => (/* binding */ extendString),\n/* harmony export */ \"extendUint8Array\": () => (/* binding */ extendUint8Array),\n/* harmony export */ \"extendBuiltins\": () => (/* binding */ extendBuiltins),\n/* harmony export */ \"Base64\": () => (/* binding */ gBase64)\n/* harmony export */ });\n/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n// makecjs:CUT //\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// and finally,\n\n\n\n//# sourceURL=webpack://login-authorization-v2/./node_modules/js-base64/base64.mjs?");
|
|
348
|
+
|
|
338
349
|
/***/ })
|
|
339
350
|
|
|
340
351
|
/******/ });
|
package/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
+
import { Base64 } from 'js-base64';
|
|
2
3
|
let tokenTimer = null;
|
|
3
4
|
let idTokenFront = null;
|
|
4
5
|
let idTokenBack = null;
|
|
@@ -114,6 +115,17 @@ function refreshIdTokenTimer (time) {
|
|
|
114
115
|
}
|
|
115
116
|
}).then(res => {
|
|
116
117
|
if (res.data.code === 200) {
|
|
118
|
+
try {
|
|
119
|
+
const userInfo = JSON.parse(Base64.decode(res.data.content.idToken.split('.')[1]))
|
|
120
|
+
const groups = userInfo['cognito:groups'] || []
|
|
121
|
+
if (groups.includes(currentSystemName)) {
|
|
122
|
+
clearInterval(tokenTimer)
|
|
123
|
+
IsPC() ? createDoalog() : createDoalogMobile()
|
|
124
|
+
return
|
|
125
|
+
}
|
|
126
|
+
} catch (e) {
|
|
127
|
+
console.warn(e)
|
|
128
|
+
}
|
|
117
129
|
setIdToken(res.data.content.idToken);
|
|
118
130
|
} else if (res.data.code === 500) {
|
|
119
131
|
if (userLogoutUrl !== '' || userLogoutUrl !== undefined) {
|
|
@@ -288,4 +300,4 @@ export {
|
|
|
288
300
|
setCookie,
|
|
289
301
|
getCookie,
|
|
290
302
|
getUrlParam,
|
|
291
|
-
}
|
|
303
|
+
}
|
package/package.json
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "login-authorization-v2",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "login authorization",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
-
"build": "webpack"
|
|
9
|
-
},
|
|
10
|
-
"keywords": [
|
|
11
|
-
"login",
|
|
12
|
-
"authorization"
|
|
13
|
-
],
|
|
14
|
-
"author": "huangcheng",
|
|
15
|
-
"license": "ISC",
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"axios": "^0.24.0"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"@babel/
|
|
22
|
-
"@babel/
|
|
23
|
-
"babel-
|
|
24
|
-
"
|
|
25
|
-
"webpack
|
|
26
|
-
|
|
27
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "login-authorization-v2",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "login authorization",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
+
"build": "webpack"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [
|
|
11
|
+
"login",
|
|
12
|
+
"authorization"
|
|
13
|
+
],
|
|
14
|
+
"author": "huangcheng",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"axios": "^0.24.0",
|
|
18
|
+
"js-base64": "^3.7.7"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@babel/core": "^7.16.5",
|
|
22
|
+
"@babel/plugin-transform-runtime": "^7.16.5",
|
|
23
|
+
"@babel/preset-env": "^7.16.5",
|
|
24
|
+
"babel-loader": "^8.2.3",
|
|
25
|
+
"webpack": "^5.65.0",
|
|
26
|
+
"webpack-cli": "^4.9.1"
|
|
27
|
+
}
|
|
28
|
+
}
|