mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-13 07:04:21 +08:00
fix: Loses role of session. (#405)
This commit is contained in:
parent
a51989f3ec
commit
7fe04ce531
@ -30,7 +30,7 @@ export function login(loginValues) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get User Info from session Uuid or token
|
// Get User Info from session Uuid or token
|
||||||
export function getInfo(token) {
|
export function requestUserInfoFromSession(token) {
|
||||||
return Instance.call(this).requestUserInfoFromSession(token)
|
return Instance.call(this).requestUserInfoFromSession(token)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { login, logout, getInfo, getSessionInfo, changeRole } from '@/api/user'
|
import { login, logout, requestUserInfoFromSession, getSessionInfo, changeRole } from '@/api/user'
|
||||||
import { getToken, setToken, removeToken, getCurrentRole, setCurrentRole, removeCurrentRole } from '@/utils/auth'
|
import { getToken, setToken, removeToken, getCurrentRole, setCurrentRole, removeCurrentRole } from '@/utils/auth'
|
||||||
import router, { resetRouter } from '@/router'
|
import router, { resetRouter } from '@/router'
|
||||||
import { showMessage } from '@/utils/ADempiere/notification'
|
import { showMessage } from '@/utils/ADempiere/notification'
|
||||||
|
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
|
||||||
import language from '@/lang'
|
import language from '@/lang'
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
@ -52,22 +53,22 @@ const mutations = {
|
|||||||
|
|
||||||
const actions = {
|
const actions = {
|
||||||
// user login
|
// user login
|
||||||
login({ commit }, userInfo) {
|
login({ commit }, {
|
||||||
const { userName, password } = userInfo
|
userName,
|
||||||
|
password
|
||||||
|
}) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
login({ userName, password })
|
login({
|
||||||
|
userName,
|
||||||
|
password
|
||||||
|
})
|
||||||
.then(logInResponse => {
|
.then(logInResponse => {
|
||||||
const { uuid: token } = logInResponse
|
const { uuid: token } = logInResponse
|
||||||
|
|
||||||
logInResponse.avatar = 'https://avatars1.githubusercontent.com/u/1263359?s=200&v=4'
|
|
||||||
logInResponse.name = logInResponse.userInfo.name
|
|
||||||
|
|
||||||
commit('SET_TOKEN', token)
|
commit('SET_TOKEN', token)
|
||||||
commit('SET_ROL', logInResponse.role)
|
|
||||||
|
|
||||||
setToken(token)
|
setToken(token)
|
||||||
setCurrentRole(logInResponse.role.uuid)
|
|
||||||
resolve(logInResponse)
|
resolve()
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
reject(error)
|
reject(error)
|
||||||
})
|
})
|
||||||
@ -75,11 +76,14 @@ const actions = {
|
|||||||
},
|
},
|
||||||
// session info
|
// session info
|
||||||
getInfo({ commit, dispatch }, sessionUuid = null) {
|
getInfo({ commit, dispatch }, sessionUuid = null) {
|
||||||
if (!sessionUuid) {
|
if (isEmptyValue(sessionUuid)) {
|
||||||
sessionUuid = getToken()
|
sessionUuid = getToken()
|
||||||
}
|
}
|
||||||
return getSessionInfo(sessionUuid)
|
return new Promise(resolve => {
|
||||||
|
getSessionInfo(sessionUuid)
|
||||||
.then(responseGetInfo => {
|
.then(responseGetInfo => {
|
||||||
|
const { role } = responseGetInfo
|
||||||
|
|
||||||
commit('setIsSession', true)
|
commit('setIsSession', true)
|
||||||
commit('setSessionInfo', {
|
commit('setSessionInfo', {
|
||||||
id: responseGetInfo.id,
|
id: responseGetInfo.id,
|
||||||
@ -105,40 +109,58 @@ const actions = {
|
|||||||
name: responseGetInfo.name,
|
name: responseGetInfo.name,
|
||||||
defaultContext: responseGetInfo.defaultContextMap
|
defaultContext: responseGetInfo.defaultContextMap
|
||||||
}
|
}
|
||||||
return sessionResponse
|
|
||||||
|
commit('SET_ROL', role)
|
||||||
|
setCurrentRole(role.uuid)
|
||||||
|
|
||||||
|
resolve(sessionResponse)
|
||||||
|
|
||||||
|
dispatch('getUserInfoFromSession', sessionUuid)
|
||||||
|
.catch(error => {
|
||||||
|
console.warn(`Error ${error.code} getting user info value: ${error.message}.`)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
console.warn(`Error getting context session ${error.message}`)
|
console.warn(`Error ${error.code} getting context session: ${error.message}.`)
|
||||||
})
|
})
|
||||||
.finally(() => {
|
|
||||||
dispatch('getUserInfoValue', sessionUuid)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// get user info
|
// get user info
|
||||||
getUserInfoValue({ commit }, sessionUuid = null) {
|
getUserInfoFromSession({ commit }, sessionUuid = null) {
|
||||||
if (!sessionUuid) {
|
if (isEmptyValue(sessionUuid)) {
|
||||||
sessionUuid = getToken()
|
sessionUuid = getToken()
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
getInfo(sessionUuid).then(responseGetInfo => {
|
requestUserInfoFromSession(sessionUuid).then(responseGetInfo => {
|
||||||
if (!responseGetInfo) {
|
if (isEmptyValue(responseGetInfo)) {
|
||||||
reject('Verification failed, please Login again.')
|
reject({
|
||||||
|
code: 0,
|
||||||
|
message: 'Verification failed, please Login again.'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// roles must be a non-empty array
|
// roles must be a non-empty array
|
||||||
if (!responseGetInfo.rolesList || responseGetInfo.rolesList.length <= 0) {
|
if (isEmptyValue(responseGetInfo.rolesList)) {
|
||||||
reject('getInfo: roles must be a non-null array!')
|
reject({
|
||||||
|
code: 0,
|
||||||
|
message: 'getInfo: roles must be a non-null array!'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const rol = responseGetInfo.rolesList.find(itemRol => {
|
|
||||||
return itemRol.uuid === getCurrentRole()
|
|
||||||
})
|
|
||||||
const rolesName = responseGetInfo.rolesList.map(rolItem => {
|
|
||||||
return rolItem.name
|
|
||||||
})
|
|
||||||
|
|
||||||
commit('SET_ROLES_LIST', responseGetInfo.rolesList)
|
commit('SET_ROLES_LIST', responseGetInfo.rolesList)
|
||||||
|
|
||||||
|
const rolesName = responseGetInfo.rolesList.map(roleItem => {
|
||||||
|
return roleItem.name
|
||||||
|
})
|
||||||
commit('SET_ROLES', rolesName)
|
commit('SET_ROLES', rolesName)
|
||||||
commit('SET_ROL', rol)
|
|
||||||
|
if (isEmptyValue(state.rol)) {
|
||||||
|
const role = responseGetInfo.rolesList.find(itemRole => {
|
||||||
|
return itemRole.uuid === getCurrentRole()
|
||||||
|
})
|
||||||
|
if (!isEmptyValue(role)) {
|
||||||
|
commit('SET_ROL', role)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Add support from ADempiere
|
// TODO: Add support from ADempiere
|
||||||
const avatar = 'https://avatars1.githubusercontent.com/u/1263359?s=200&v=4'
|
const avatar = 'https://avatars1.githubusercontent.com/u/1263359?s=200&v=4'
|
||||||
@ -146,11 +168,10 @@ const actions = {
|
|||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
...responseGetInfo,
|
...responseGetInfo,
|
||||||
avatar: avatar,
|
avatar,
|
||||||
roles: rolesName
|
roles: rolesName
|
||||||
})
|
})
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.warn(`Error getting user info value ${error.message}`)
|
|
||||||
reject(error)
|
reject(error)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -205,15 +226,16 @@ const actions = {
|
|||||||
query: route.query,
|
query: route.query,
|
||||||
title: route.meta.title
|
title: route.meta.title
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let actionToDispatch = 'tagsView/delOthersViews'
|
||||||
if (isCloseAllViews) {
|
if (isCloseAllViews) {
|
||||||
dispatch('tagsView/delAllViews', selectedTag, { root: true })
|
actionToDispatch = 'tagsView/delAllViews'
|
||||||
} else {
|
|
||||||
dispatch('tagsView/delOthersViews', selectedTag, { root: true })
|
|
||||||
}
|
}
|
||||||
|
dispatch(actionToDispatch, selectedTag, { root: true })
|
||||||
|
|
||||||
return changeRole({
|
return changeRole({
|
||||||
sessionUuid: getToken(),
|
sessionUuid: getToken(),
|
||||||
roleUuid: roleUuid,
|
roleUuid,
|
||||||
organizationUuid: null,
|
organizationUuid: null,
|
||||||
warehouseUuid: null
|
warehouseUuid: null
|
||||||
})
|
})
|
||||||
|
@ -181,7 +181,9 @@ export default {
|
|||||||
this.loading = true
|
this.loading = true
|
||||||
this.$store.dispatch('user/login', this.loginForm)
|
this.$store.dispatch('user/login', this.loginForm)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.$router.push({ path: this.redirect || '/' })
|
this.$router.push({
|
||||||
|
path: this.redirect || '/'
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
if (error.code === 13) {
|
if (error.code === 13) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user