Files
klp-mono/apps/hand-factory/store/modules/user.js
2026-01-15 20:18:37 +08:00

151 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import config from '@/config'
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import {
isHttp,
isEmpty
} from "@/utils/validate"
import {
login,
loginZinc1,
logout,
getInfo
} from '@/api/login'
import {
getToken,
setToken,
removeToken,
getZinc1Token,
setZinc1Token,
removeZinc1Token
} from '@/utils/auth'
import defAva from '@/static/images/avatar.png'
const baseUrl = config.baseUrl
const user = {
state: {
token: getToken(),
id: storage.get(constant.id),
name: storage.get(constant.name),
avatar: storage.get(constant.avatar),
roles: storage.get(constant.roles),
permissions: storage.get(constant.permissions)
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_ID: (state, id) => {
state.id = id
storage.set(constant.id, id)
},
SET_NAME: (state, name) => {
state.name = name
storage.set(constant.name, name)
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
storage.set(constant.avatar, avatar)
},
SET_ROLES: (state, roles) => {
state.roles = roles
storage.set(constant.roles, roles)
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
storage.set(constant.permissions, permissions)
}
},
actions: {
// 登录主系统登录成功即算登录成功Zinc1系统静默登录
Login({
commit
}, userInfo) {
const username = userInfo.username.trim()
const password = userInfo.password
const code = userInfo.code
const uuid = userInfo.uuid
return new Promise((resolve, reject) => {
// 先执行主系统登录
login(username, password, code, uuid).then(mainRes => {
// 主系统登录成功立即保存token并resolve
if (mainRes && mainRes.data && mainRes.data.token) {
setToken(mainRes.data.token)
commit('SET_TOKEN', mainRes.data.token)
}
// 主系统登录成功后静默执行Zinc1登录不等待结果不显示任何错误
loginZinc1(username, password, code, uuid).then(zinc1Res => {
// Zinc1登录成功静默保存token
if (zinc1Res && zinc1Res.data && zinc1Res.data.token) {
setZinc1Token(zinc1Res.data.token)
}
}).catch(() => {
// Zinc1登录失败完全静默处理不做任何提示
})
// 主系统登录成功即返回
resolve()
}).catch(error => {
// 只有主系统登录失败才reject
reject(error)
})
})
},
// 获取用户信息
GetInfo({
commit,
state
}) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.data.user
let avatar = user.avatar || ""
if (!isHttp(avatar)) {
avatar = (isEmpty(avatar)) ? defAva : baseUrl + avatar
}
const userid = (isEmpty(user) || isEmpty(user.userId)) ? "" : user.userId
const username = (isEmpty(user) || isEmpty(user.userName)) ? "" : user.userName
if (res.roles && res.roles.length > 0) {
commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_ID', userid)
commit('SET_NAME', username)
commit('SET_AVATAR', avatar)
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 退出系统
LogOut({
commit,
state
}) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
removeZinc1Token() // 同时清除Zinc1 token
storage.clean()
resolve()
}).catch(error => {
reject(error)
})
})
}
}
}
export default user