import {getInfo, login, logout} from '@/api/login'
|
import {Module} from "vuex";
|
import {getToken, removeToken, setToken} from "@/utils/auth";
|
import {loginF} from "@/views/login.vue";
|
import defAva from '@/assets/images/profile.jpg'
|
import {State} from "@/store";
|
|
export interface UserState {
|
token: string | undefined,
|
name: string | undefined,
|
avatar: string | undefined,
|
roles: [],
|
permissions: []
|
}
|
|
const user: Module<UserState, State> = {
|
state: (): UserState => ({
|
token: getToken(),
|
name: '',
|
avatar: '',
|
roles: [],
|
permissions: [],
|
}),
|
mutations: {
|
SET_TOKEN: (state: UserState, token: string) => {
|
state.token = token
|
},
|
SET_NAME: (state: UserState, name: string) => {
|
state.name = name
|
},
|
SET_AVATAR: (state: UserState, avatar: string) => {
|
state.avatar = avatar
|
},
|
SET_ROLES: (state: UserState, roles: []) => {
|
state.roles = roles
|
},
|
SET_PERMISSIONS: (state: UserState, permissions: []) => {
|
state.permissions = permissions
|
}
|
},
|
actions: {
|
Login({commit}: any, userInfo: loginF) {
|
const username = userInfo.username.trim();
|
const password = userInfo.password;
|
const code = userInfo.code;
|
const uuid = userInfo.uuid;
|
return new Promise<void>((resolve, reject) => {
|
login({username, password, code, uuid}).then(res => {
|
setToken(res.token);
|
commit('SET_TOKEN', res.token);
|
resolve()
|
}).catch(err => {
|
reject(err)
|
})
|
})
|
},
|
GetInfo({commit, state}) {
|
return new Promise((resolve, reject) => {
|
getInfo().then(res => {
|
const user = res.user
|
const avatar = user.avatar == "" ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
|
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
|
commit('SET_ROLES', res.roles)
|
commit('SET_PERMISSIONS', res.permissions)
|
} else {
|
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
}
|
commit('SET_NAME', user.userName)
|
commit('SET_AVATAR', avatar)
|
resolve(res)
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
// 退出系统
|
LogOut({commit, state}) {
|
return new Promise<void>((resolve, reject) => {
|
logout(state.token).then(() => {
|
commit('SET_TOKEN', '')
|
commit('SET_ROLES', [])
|
commit('SET_PERMISSIONS', [])
|
removeToken()
|
resolve()
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
}
|
}
|
}
|
|
export default user;
|