You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

165 lines
4.8 KiB

import { login, logout, getInfo } from '@/api/user'
import { getStorage, setStorage, removeStorage } from '@/utils/auth'
import router, { resetRouter } from '@/router'
const state = {
token: getStorage(),
userInfo: '',
menus: ''
}
const mutations = {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_UESRINFO: (state, userInfo) => {
state.userInfo = userInfo
},
SET_MENUS: (state, menus) => {
state.menus = menus
}
}
const actions = {
// user login
login({ commit }, userInfo) {
return new Promise((resolve, reject) => {
login(userInfo).then(response => {
const { data } = response
commit('SET_TOKEN', data.token)
setStorage(data.token)
let user = {
roleSid: data.roleSid,
name: data.name,
userName: data.userName,
departmentName: data.departmentName,
isAdmin: data.isAdmin,
staffSid: data.staffSid,
userSid: data.sid,
orgSid: data.organizationSid,
Orgname: data.organizationName,
dwjb: data.dwjb,
pNameAndDepartmentNameAndPostName: data.pNameAndDepartmentNameAndPostName,
roleName: data.roleName,
defaultOrgPathName: data.defaultOrgPathName,
defaultOrgPath: data.defaultOrgPath,
postName: data.postName,
sid: data.sid,
type:data.type
}
commit('SET_UESRINFO', user)
window.sessionStorage.setItem('userSid', user.userSid)
window.sessionStorage.setItem('userName', user.userName)
window.sessionStorage.setItem('Orgname', user.Orgname)
window.sessionStorage.setItem('departmentName', user.departmentName)
window.sessionStorage.setItem('name', user.name)
window.sessionStorage.setItem('pNameAndDepartmentNameAndPostName', user.pNameAndDepartmentNameAndPostName)
window.sessionStorage.setItem('roleName', user.roleName)
window.sessionStorage.setItem('defaultOrgPathName', user.defaultOrgPathName)
window.sessionStorage.setItem('defaultOrgPath', user.defaultOrgPath)
window.sessionStorage.setItem('postName', user.postName)
window.sessionStorage.setItem('sid', user.sid)
window.sessionStorage.setItem('type', user.type)
resolve(data)
}).catch(error => {
reject(error)
})
})
},
// get user info
getInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(response => {
const { data } = response
if (!data) {
removeStorage()
reject('Verification failed, please Login again.')
}
let user = {
roleSid: data.roleSid,
name: data.name,
userName: data.userName,
orgRoleName: data.orgRoleName,
isAdmin: data.isAdmin,
staffSid: data.staffSid,
userSid: data.sid,
orgSid: data.organizationSid,
Orgname: data.organizationName,
dwjb: data.dwjb
}
commit('SET_UESRINFO', user)
resolve(data)
}).catch((error) => {
removeStorage()
router.push({ path: '/' })
// reject(error)
})
})
},
getMenus({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(response => {
const { data } = response
commit('SET_UESRINFO', user)
resolve(data)
}).catch(error => {
reject(error)
})
})
},
// user logout
logout({ commit, state, dispatch }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_UESRINFO', '')
removeStorage()
resetRouter()
resolve()
}).catch(error => {
reject(error)
})
})
}
// remove token
// resetToken({ commit }) {
// return new Promise(resolve => {
// commit('SET_TOKEN', '')
// commit('SET_ROLES', [])
// removeToken()
// resolve()
// })
// },
// dynamically modify permissions
// async changeRoles({ commit, dispatch }, role) {
// const token = role + '-token'
// commit('SET_TOKEN', token)
// setToken(token)
// const { roles } = await dispatch('getInfo')
// resetRouter()
// // generate accessible routes map based on roles
// const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true })
// // dynamically add accessible routes
// router.addRoutes(accessRoutes)
// // reset visited views and cached views
// dispatch('tagsView/delAllViews', null, { root: true })
// }
}
export default {
namespaced: true,
state,
mutations,
actions
}