You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

94 lines
2.7 KiB

import store from '@/store'
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/token'
const user = {
state: {
token: getToken(),
userInfo: storage.get(constant.userInfo),
loginInfo: storage.get(constant.loginInfo),
name: storage.get(constant.name),
avatar: storage.get(constant.avatar)
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_USER_INFO: (state, userInfo) => {
state.userInfo = userInfo
storage.set(constant.userInfo, userInfo)
},
SET_LOGIN_INFO: (state, loginInfo) => {
state.loginInfo = loginInfo
storage.set(constant.loginInfo, loginInfo)
},
SET_NAME: (state, name) => {
state.name = name
storage.set(constant.name, name)
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
storage.set(constant.avatar, avatar)
}
},
actions: {
Login({ commit }, userInfo) {
const loginType = userInfo.loginType
const userName = userInfo.userName
const password = userInfo.password
const smsCode = userInfo.smsCode
const registerFlag = userInfo.registerFlag
const code = userInfo.code
const uuid = userInfo.uuid
return new Promise((resolve, reject) => {
login(loginType, userName, password, smsCode, registerFlag, code, uuid).then(res => {
setToken(res.data.token)
commit('SET_TOKEN', res.data.token)
commit('SET_LOGIN_INFO', userInfo)
resolve()
}).catch(error => {
reject(error)
})
})
},
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.data.user
const avatar = (user == null || user.avatar == "" || user.avatar == null) ?
import.meta.env.VITE_APP_DEFAULT_AVATAR : user.avatar
const userName = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
commit('SET_USER_INFO', user)
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_USER_INFO', {})
commit('SET_NAME', "")
commit('SET_AVATAR', "")
removeToken()
storage.clean()
resolve()
}).catch(error => {
reject(error)
})
})
}
}
}
export default user