- 1 判断是否是Hwork的页面(http、https开头);
- 2 调用hwork登录接口(terminal = 'pc')获取 accessToken 和 refreshToken;
- 3 处理免登,依照和后端的约定,对url进行改造
后端根据 accessToken 来验证用户合法性
/*
https://t-wbench.haier.net/api/sso/v1/jumpGateway?redirectUrl=xxx&userId=xxx&token=xxx&refreshToken=xxx
redirectUrl: encodeURIComponent(url)
userId: userId
token: accessToken
refreshToken: refreshToken
*/
https://t-wbench.haier.net/api/sso/v1/jumpGateway?redirectUrl=https%3A%2F%2Ft-wbench.haier.net%2Fbulletin%2Flist%3FuserId%3D19036275&token=eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzI1NiJ9.eyJURVJNSU5BTC1UWVBFIjoicGMiLCJVU0VSLUVNQUlMIjoiemhhbmd5aW5nd2VuQGhhaWVyLmNvbSIsImlzcyI6Imh3b3JrLXByZSIsIlVTRVItTkFNRSI6IiVFNSVCQyVBMCVFOCU4QiVCMSVFNiU5NiU4NyIsIlVTRVItUEhPTkUiOiIxMzM1Njg4NTI4OSIsIlVTRVItUk9MRS1OQU1FIjoiJUU3JUFFJUExJUU3JTkwJTg2JUU1JTkxJTk4JTI4JUU0JUI4JTlBJUU1JThBJUExJTI5IiwiVVNFUi1XSE9MRS1ORVQiOjAsIlVTRVIiOiIxOTAzNjI3NSIsIlVTRVItUk9MRSI6IkdMWVlXX25ldyIsImlhdCI6MTY1MzYzMTkyMSwiZXhwIjoxNjUzNjM5MTIxfQ.rUnqYgc7OxqvCPQuuuy8NlkO5qusw2VDvBLLo1zNBYw&refreshToken=X7ATxOV4hn5D5OqNC4SN66YE88WgGU2fnEO5pEubxqmpFDTtTI+eN9pGryba+15u
- 4 electron桌面端打开新的tab页
通过 electron webview属性,打开新的标签页
arr.push({
name: item.componentName, // 组件的名称
src, // 拼装好的url
type: item.type,
iconUrl: item.iconUrl ?? APP_DEFAULT_ICON, // tab小图标
uniqueVal: item.uniqueVal // id
})
- 5 外部项目打开新的tab页(公告列表页)
通过 window.open 方法来打开新的标签页
// 外部项目
window.open(componentUrl, JSON.stringify({
type: 'opentab',
name: componentName,
uniqueVal: componentName + item.id,
iconUrl: 'https://imstatic.haier.net/dev-workbench-static/app-notice-icon.png'
}))
// electron 桌面端 webview 监听new-window
webview.addEventListener('new-window', (e) => {
if (e.frameName !== '_blank') {
const newTabData = JSON.parse(e.frameName)
console.log(newTabData);
self.addNewTab({
componentUrl: e.url,
componentName: newTabData.name || '',
uniqueVal: newTabData.uniqueVal,
iconUrl: newTabData.iconUrl ?? APP_DEFAULT_ICON,
type: 2,
outLink: !e.url.includes('haier')
})
}
})