1
0
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:
Edwin Betancourt 2020-03-11 21:47:39 -04:00 committed by GitHub
parent a51989f3ec
commit 7fe04ce531
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 92 additions and 68 deletions

View File

@ -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)
} }

View File

@ -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
}) })

View File

@ -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) {