import { loginByUsername, logout, getUserInfo, refreshToken } from '@/api/login'
|
import { getToken, setToken, removeToken } from '@/utils/auth'
|
import Cookies from 'js-cookie'
|
import { initRouter } from '@/utils/router'
|
const user = {
|
state: {
|
user: '',
|
status: '',
|
code: '',
|
userType: '',
|
instituteId: '',
|
instituteName: '',
|
fullname: '',
|
printBar:'',
|
token: getToken(),
|
name: '',
|
avatar: '',
|
introduction: '',
|
roles: [],
|
setting: {
|
articlePlatform: []
|
},
|
classifyOne:'',
|
},
|
|
mutations: {
|
SET_CODE: (state, code) => {
|
state.code = code
|
},
|
SET_TOKEN: (state, token) => {
|
state.token = token
|
},
|
SET_INTRODUCTION: (state, introduction) => {
|
state.introduction = introduction
|
},
|
SET_SETTING: (state, setting) => {
|
state.setting = setting
|
},
|
SET_STATUS: (state, status) => {
|
state.status = status
|
},
|
SET_NAME: (state, name) => {
|
state.name = name
|
},
|
SET_AVATAR: (state, avatar) => {
|
state.avatar = avatar
|
},
|
SET_ROLES: (state, roles) => {
|
state.roles = roles
|
},
|
SET_USER_TYPE: (state, userType) => {
|
state.userType = userType
|
},
|
SET_INSTITUTE_ID: (state, instituteID) => {
|
state.instituteId = instituteID
|
},
|
SET_INSTITUTE_NAME: (state, instituteName) => {
|
state.instituteName = instituteName
|
},
|
SET_INSTITUTE_FULLNAME: (state, fullname) => {
|
state.fullname = fullname
|
},
|
SET_PRINT: (state, printBar) => {
|
state.printBar = printBar
|
},
|
SET_ONE : (state , name) =>{
|
state.classifyOne = name
|
}
|
},
|
|
actions: {
|
getClassifyOne({ commit }, listQuery){
|
commit('SET_ONE', listQuery)
|
},
|
// 用户名登录
|
LoginByUsername({ commit }, userInfo) {
|
const username = userInfo.username.trim()
|
return new Promise((resolve, reject) => {
|
loginByUsername(username, userInfo.password).then(response => {
|
const data = response.data
|
commit('SET_TOKEN', data.token)
|
setToken(response.data.token)
|
resolve()
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// 获取用户信息
|
GetUserInfo({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
getUserInfo(state.token).then(response => {
|
// 由于mockjs 不支持自定义状态码只能这样hack
|
if (!response.data) {
|
reject('Verification failed, please login again.')
|
}
|
|
const res = response.data
|
if (res.code == 200) {
|
const data = res.result
|
if (data.type != 1 && data.type != 2) {
|
if (!data.roles || data.roles.length == 0) { // 验证返回的roles是否是一个非空数组
|
commit('SET_ROLES', [])
|
reject('用户未分配角色,没有权限登录')
|
}
|
}
|
commit('SET_ROLES', data.roles)
|
Cookies.set('roleType',data.roleType)
|
Cookies.set('isSupervision',data.companyid)
|
Cookies.set('company',data.company)
|
Cookies.set('roles', JSON.stringify(data.roles))
|
Cookies.set('userName', data.username)
|
Cookies.set('name', data.username)
|
Cookies.set('userId', data.id)
|
commit('SET_NAME', data.username)
|
commit('SET_AVATAR', data.avatar)
|
commit('SET_INTRODUCTION', data.introduction)
|
commit('SET_USER_TYPE', data.type)
|
commit('SET_INSTITUTE_ID', data.instituteId)
|
commit('SET_INSTITUTE_NAME', data.instituteName)
|
commit('SET_INSTITUTE_FULLNAME', data.fullname)
|
// 加载菜单
|
initRouter(window.vueInstance)
|
resolve(response)
|
} else {
|
reject('getInfo: ' + res.message)
|
}
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// 第三方验证登录
|
// LoginByThirdparty({ commit, state }, code) {
|
// return new Promise((resolve, reject) => {
|
// commit('SET_CODE', code)
|
// loginByThirdparty(state.status, state.email, state.code).then(response => {
|
// commit('SET_TOKEN', response.data.token)
|
// setToken(response.data.token)
|
// resolve()
|
// }).catch(error => {
|
// reject(error)
|
// })
|
// })
|
// },
|
|
// 登出
|
LogOut({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
logout(state.token).then(() => {
|
commit('SET_TOKEN', '')
|
commit('SET_ROLES', [])
|
Cookies.remove('userName')
|
Cookies.remove('name')
|
Cookies.remove('userId')
|
removeToken()
|
resolve()
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
},
|
|
// 前端 登出
|
FedLogOut({ commit }) {
|
return new Promise(resolve => {
|
commit('SET_TOKEN', '')
|
commit('SET_ROLES', [])
|
Cookies.remove('userName')
|
Cookies.remove('name')
|
Cookies.remove('userId')
|
removeToken()
|
resolve()
|
})
|
},
|
|
// 动态修改权限
|
ChangeRoles({ commit, dispatch }, role) {
|
return new Promise(resolve => {
|
commit('SET_TOKEN', role)
|
setToken(role)
|
getUserInfo(role).then(response => {
|
const data = response.data
|
commit('SET_ROLES', data.roles)
|
commit('SET_NAME', data.username)
|
commit('SET_AVATAR', data.avatar)
|
commit('SET_INTRODUCTION', data.introduction)
|
dispatch('GenerateRoutes', data) // 动态修改权限后 重绘侧边菜单
|
resolve()
|
})
|
})
|
},
|
|
RefreshToken({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
refreshToken(state.token).then((response) => {
|
const res = response.data
|
if (res.code == 200) {
|
const token = res.result.token
|
commit('SET_TOKEN', token)
|
setToken(token)
|
Cookies.set('token_expired_at', res.result.token_expired_at)
|
resolve(response)
|
} else {
|
reject(res.message)
|
}
|
}).catch(error => {
|
reject(error)
|
})
|
})
|
}
|
}
|
}
|
|
export default user
|