diff --git a/App.vue b/App.vue index bbe4f41..8f20c16 100644 --- a/App.vue +++ b/App.vue @@ -3,25 +3,31 @@ import { reactive, inject, onMounted } from 'vue'; import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'; import useUserStore from './stores/useUserStore'; import useDictStore from './stores/useDictStore'; -const { $api, navTo, appendScriptTagElement } = inject('globalFunction'); +const { $api, navTo, appendScriptTagElement, aes_Decrypt, sm2_Decrypt } = inject('globalFunction'); import config from '@/config.js'; +const appword = 'aKd20dbGdFvmuwrt'; // 固定值 + onLaunch((options) => { - useUserStore().initSeesionId(); //更新 + // uni.hideTabBar(); useDictStore().getDictData(); - uni.hideTabBar(); - // 登录 - let token = uni.getStorageSync('token') || ''; // 同步获取 缓存信息 - if (token) { - useUserStore() - .loginSetToken(token) - .then(() => { - $api.msg('登录成功'); + try { + getUserInfo(); + } catch { + console.log('不是爱山东平台,使用测试登陆'); + useUserStore().initSeesionId(); //更新 + let token = uni.getStorageSync('token') || ''; // 同步获取 缓存信息 + if (token) { + useUserStore() + .loginSetToken(token) + .then(() => { + $api.msg('登录成功'); + }); + } else { + uni.redirectTo({ + url: '/pages/login/login', }); - } else { - uni.redirectTo({ - url: '/pages/login/login', - }); + } } }); @@ -34,6 +40,87 @@ onShow(() => { onHide(() => { console.log('App Hide'); }); + +function getUserInfo() { + lightAppJssdk.user.getUserInfoWithEncryptedParamByAppId({ + appId: 'qdsrgznrgpp', // 接入方在成功创建应用后自动生成 + success: function (data) { + if (data == '未登录') onLoginApp(); + else { + if (typeof data == 'string') data = JSON.parse(data); + + const sm2_privateKey = '7e14966df4ecd4241ed082ef716d82b52113cb5899ebdc704a98844d0a32b0dc'; + let sm2_encrypt_result = data.data; + let sm2_decrypt_result = sm2_Decrypt(sm2_encrypt_result, sm2_privateKey); + + if (typeof sm2_decrypt_result == 'string') sm2_decrypt_result = JSON.parse(sm2_decrypt_result); + + // 其次,对sm2解密后的结果进行 aes解密 + // aes解密需要用到 appword , 为固定值,使用示例代码中的即可 + let aes_encrypt_result = sm2_decrypt_result.data; + let aes_decrypt_result = aes_Decrypt(aes_encrypt_result, appword); + + // 加密 + loginCallback(aes_decrypt_result); + } + }, + fail: function (data) { + console.log('err', data); + }, + }); +} + +/** + * 使用jssdk调用登录页面 + */ +function onLoginApp() { + lightAppJssdk.user.loginapp({ + success: function (data) { + if (data == '未登录') { + //取消登录或登录失败,关闭页面 + oncloseWindow(); + } else { + getUserInfo(); + } + }, + fail: function (data) { + //关闭页面 + oncloseWindow(); + }, + }); +} + +/** + * 关闭容器 + */ +function oncloseWindow() { + lightAppJssdk.navigation.close({ + success: function (data) {}, + fail: function (data) {}, + }); +} + +function loginCallback(userInfo) { + let params = { + username: userInfo, + }; + $api.createRequest('/app/login', params, 'post').then((resData) => { + useUserStore() + .loginSetToken(resData.token) + .then((resume) => { + if (resume.data.jobTitleId) { + useUserStore().initSeesionId(); + uni.reLaunch({ + url: '/pages/index/index', + }); + } else { + uni.redirectTo({ + url: '/pages/login/login', + }); + } + }); + }); +}