import { getClientHello, getClientAuth } from 'services/ukeyAuth.js' import { getLoginRandom, trxLogin, offlineToken } from 'services/trxLogin.js' import Cookies from 'js-cookie' import { ElMessage } from 'element-plus' import { getTrxToken } from 'utils/auth' const state = {} const mutations = {} const actions = { // 登录 Login({ commit }, password) { return new Promise((resolve, reject) => { // 调用 ukey 获取 clientHello console.log('执行 store.dispatch(ukey/Login)开始,传参为password:', password) getClientHello(password).then(checkRes => { console.log('调用 ukey getClientHello 方法,接口返回结果为:', checkRes) if (checkRes.result !== 0) { console.log('调用 ukey getClientHello 方法失败,接口返回结果为:', checkRes) Cookies.remove('ngx_cookie') ElMessage({ message: checkRes.message, type: 'error' }) resolve({ success: false }) } const clientHello = checkRes.clientHello console.log('clientHello:', clientHello) Cookies.set('ngx_cookie', clientHello) // 调用天融信单点登录获取 serverHello getLoginRandom(clientHello) .then(randomRes => { console.log('调用 getLoginRandom 方法,接口返回结果为:', randomRes) if (!randomRes.success) { console.log('调用 getLoginRandom 方法失败,接口返回结果为:', randomRes) resolve({ success: false }) return } const serverHello = randomRes.data console.log('serverHello:', serverHello) // 调用 ukey 获取 ClientAuth getClientAuth(password, serverHello, clientHello) .then(authRes => { console.log('调用 ukey getClientAuth 方法,接口返回结果为:', authRes) // 暂未用到 // eslint-disable-next-line @typescript-eslint/no-unused-vars const ClientAuth = authRes.clientAuth if (authRes.result !== 0) { console.log('调用 ukey getClientAuth 方法失败,接口返回结果为:', authRes) ElMessage({ message: authRes.message, type: 'error' }) resolve({ success: false }) return } const loginName = 'key' trxLogin({ loginName, passwd: password, clientHello, // 其实是接口文档里面的 cookie serverHello: ClientAuth }).then(tokenRes => { console.log('调用 trxLogin 方法,接口返回结果为:', tokenRes) if (!tokenRes.success) { console.log('调用 trxLogin 方法失败,接口返回结果为:', tokenRes) resolve({ success: false }) return } resolve(tokenRes) return }) }) .catch(err => { console.log('调用 ukey getClientAuth 方法 [catch] ,接口返回结果为:', err) reject(err) }) }) .catch(err => { console.log('调用 getLoginRandom 方法 [catch] ,接口返回结果为:', err) reject(err) }) }) }) }, // 退出系统 Logout() { return new Promise((resolve, reject) => { resolve({ success: true }) // 调用天融信单点退出系统 const trxToken = getTrxToken() if (!trxToken) reject(new Error('未找到 trxToken')) offlineToken(trxToken).then( res => { console.log('调用天融信单点退出系统', res) resolve(res) }, err => { reject(err) } ) }) } } export default { namespaced: true, state, mutations, actions }