blob: b504067a44c3849bd6fa0321c5a44e4e7ae54793 [file] [log] [blame]
huibing.xie1f1606f2018-08-20 15:46:55 +08001import { login, logout, getInfo } from '@/api/login'
2import { getToken, setToken, removeToken } from '@/utils/auth'
3
4const user = {
5 state: {
6 token: getToken(),
7 name: '',
8 avatar: '',
9 roles: []
10 },
11
12 mutations: {
13 SET_TOKEN: (state, token) => {
14 state.token = token
15 },
16 SET_NAME: (state, name) => {
17 state.name = name
18 },
19 SET_AVATAR: (state, avatar) => {
20 state.avatar = avatar
21 },
22 SET_ROLES: (state, roles) => {
23 state.roles = roles
24 }
25 },
26
27 actions: {
28 // 登录
29 Login({ commit }, userInfo) {
30 const username = userInfo.username.trim()
31 return new Promise((resolve, reject) => {
32 login(username, userInfo.password).then(response => {
33 const data = response.data
34 setToken(data.token)
35 commit('SET_TOKEN', data.token)
36 resolve()
37 }).catch(error => {
38 reject(error)
39 })
40 })
41 },
42
43 // 获取用户信息
44 GetInfo({ commit, state }) {
45 return new Promise((resolve, reject) => {
46 getInfo(state.token).then(response => {
47 const data = response.data
48 if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
49 commit('SET_ROLES', data.roles)
50 } else {
51 reject('getInfo: roles must be a non-null array !')
52 }
53 commit('SET_NAME', data.name)
54 commit('SET_AVATAR', data.avatar)
55 resolve(response)
56 }).catch(error => {
57 reject(error)
58 })
59 })
60 },
61
62 // 登出
63 LogOut({ commit, state }) {
64 return new Promise((resolve, reject) => {
65 logout(state.token).then(() => {
66 commit('SET_TOKEN', '')
67 commit('SET_ROLES', [])
68 removeToken()
69 resolve()
70 }).catch(error => {
71 reject(error)
72 })
73 })
74 },
75
76 // 前端 登出
77 FedLogOut({ commit }) {
78 return new Promise(resolve => {
79 commit('SET_TOKEN', '')
80 removeToken()
81 resolve()
82 })
83 }
84 }
85}
86
87export default user