login.js
4.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
import uc from '@/api/uc.js'
import auth from '@/api/auth.js'
// 获取当前sessionStorage中存放的用户信息
const getCurrentUserFromStorage = () => {
const user = sessionStorage.getItem('currentUser')
if (user != 'null' && user != undefined && user != '') {
return JSON.parse(user)
}
return null
}
// 设置用户信息到sessionStorage中
const setCurrentUserToStorage = user => {
sessionStorage.setItem('currentUser', JSON.stringify(user))
}
// 清空sessionStorage中的用户信息
const cleanCurrentUserInStorage = () => {
sessionStorage.removeItem('currentUser')
sessionStorage.removeItem('currentUserLogin')
}
// 设置用户信息到sessionStorage中
const setCurrentUserLoginToStorage = user => {
sessionStorage.setItem('currentUserLogin', JSON.stringify(user))
}
const state = {
currentUser: getCurrentUserFromStorage(),
loginAccount: null,
isRefreshToken: false,
loginStatus: true,
loginValue: {}
}
const getters = {}
const actions = {
actionLoginAccount({commit, state}, loginAccount) {
commit('mutationLoginAccount', loginAccount)
},
loginByPrincipal({commit, state}, principal) {
return new Promise((resolve, reject) => {
auth.authentication(
principal,
user => {
if (user) {
commit('setLoginValue', user.value)
// 当前登录毫秒数
user.loginTime = new Date().getTime()
setCurrentUserToStorage(user)
setCurrentUserLoginToStorage(user)
commit('setCurrentUser', user)
resolve(user)
}
},
msg => {
commit('clearCurrentUser')
reject(msg)
}
)
})
},
refreshAndGetAuthenticationToken({commit, state}) {
if (state.isRefreshToken) {
return
}
commit('isRefreshToken', true)
return new Promise((resolve, reject) => {
auth.refreshAndGetAuthenticationToken().then(
user => {
if (user) {
setCurrentUserToStorage(user)
commit('refreshToken', user.token)
setTimeout(() => {
commit('isRefreshToken', false)
}, 3000)
resolve()
}
},
msg => {
reject(msg)
}
)
})
},
validAndCompletedCurrent({commit, state}, token) {
return new Promise((resolve, reject) => {
if (state.currentUser && !token) {
resolve()
} else if (token) {
auth.basicSso(
token,
user => {
setCurrentUserToStorage(user)
commit('setCurrentUser', user)
resolve()
},
() => {
reject()
}
)
} else {
reject()
}
})
},
logoutAndCleanUp({commit, state}) {
return new Promise((resolve, reject) => {
auth.logout().finally(() => {
cleanCurrentUserInStorage()
commit('clearCurrentUser')
commit('user/setCurrentUserDetail', null, {root: true})
resolve()
})
})
},
cleanCurrentUser({commit, state}) {
cleanCurrentUserInStorage()
commit('clearCurrentUser')
commit('user/setCurrentUserDetail', null, {root: true})
},
async twoStepVerify({commit, dispatch}, loginInfo) {
const formData = new FormData()
formData.append('code', loginInfo.code)
formData.append('token', loginInfo.token)
const {
data: {value}
} = await uc.twoStepVerify(formData, loginInfo.tenantId)
value.loginTime = new Date().getTime()
commit('setLoginStatus', value.loginStatus)
setCurrentUserToStorage(value)
commit('setCurrentUser', value)
}
}
const mutations = {
isRefreshToken(state, status) {
state.isRefreshToken = status
},
refreshToken(state, token) {
state.currentUser.token = token
state.currentUser.loginTime = new Date().getTime()
},
setCurrentUser(state, current) {
state.currentUser = current
},
setLoginValue(state, loginValue) {
state.loginValue = loginValue
},
clearCurrentUser(state) {
state.currentUser = null
},
mutationLoginAccount(state, loginAccount) {
state.loginAccount = loginAccount
},
setLoginStatus(state, loginStatus) {
state.loginStatus = loginStatus
}
}
export default {
namespaced: true,
state,
getters,
actions,
mutations
}