main-web/src/store/modules/ukey.js

113 lines
4.0 KiB
JavaScript

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
}