This commit is contained in:
zhangwei
2019-01-20 15:36:26 +08:00
parent e384b8dfea
commit 5066865682
34 changed files with 1366 additions and 301 deletions

View File

@@ -8,12 +8,15 @@ const getters = {
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
fid: state => state.user.fid,
uid: state => state.user.uid,
introduction: state => state.user.introduction,
status: state => state.user.status,
roles: state => state.user.roles,
setting: state => state.user.setting,
permission_routers: state => state.permission.routers,
addRouters: state => state.permission.addRouters,
errorLogs: state => state.errorLog.logs
errorLogs: state => state.errorLog.logs,
user: state => state.user
}
export default getters

View File

@@ -7,7 +7,7 @@ const app = {
withoutAnimation: false
},
device: 'desktop',
language: Cookies.get('language') || 'en',
language: Cookies.get('language') || 'zh',
size: Cookies.get('size') || 'medium'
},
mutations: {

View File

@@ -7,7 +7,7 @@ import { asyncRouterMap, constantRouterMap } from '@/router'
*/
function hasPermission(roles, route) {
if (route.meta && route.meta.roles) {
return roles.some(role => route.meta.roles.includes(role))
return roles.some(role => route.meta.roles.indexOf(role) >= 0)
} else {
return true
}
@@ -50,7 +50,7 @@ const permission = {
return new Promise(resolve => {
const { roles } = data
let accessedRouters
if (roles.includes('admin')) {
if (data.roles.includes(1) || data.roles.includes(0)) {
accessedRouters = asyncRouterMap
} else {
accessedRouters = filterAsyncRouter(asyncRouterMap, roles)

View File

@@ -1,16 +1,19 @@
import { loginByUsername, logout, getUserInfo } from '@/api/login'
import { Message } from 'element-ui'
import { getToken, setToken, removeToken } from '@/utils/auth'
const user = {
state: {
user: '',
status: '',
code: '',
token: getToken(),
admin: false,
name: '',
fid: '',
uid: '',
roles: [],
avatar: '',
introduction: '',
roles: [],
setting: {
articlePlatform: []
}
@@ -35,6 +38,16 @@ const user = {
SET_NAME: (state, name) => {
state.name = name
},
SET_FID: (state, fid) => {
state.fid = fid
},
SET_ADMIN: (state, admin) => {
state.admin = admin
},
SET_UID: (state, uid) => {
state.uid = uid
},
// 头像
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
@@ -47,12 +60,27 @@ const user = {
// 用户名登录
LoginByUsername({ commit }, userInfo) {
const username = userInfo.username.trim()
userInfo.fid = 1
const fid = parseInt(userInfo.fid)
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()
loginByUsername(username, userInfo.password, fid).then(response => {
if (response.data.code === 200) {
const data = response.data.result
commit('SET_TOKEN', data.token)
commit('SET_FID', fid)
commit('SET_NAME', data.name)
commit('SET_ADMIN', data.roles.includes(1))
commit('SET_UID', data.uid)
setToken(data.token)
resolve()
} else {
Message({
message: response.data.message,
type: 'error',
duration: 4 * 1000
})
resolve()
}
}).catch(error => {
reject(error)
})
@@ -63,21 +91,18 @@ const user = {
GetUserInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getUserInfo(state.token).then(response => {
// 由于mockjs 不支持自定义状态码只能这样hack
if (!response.data) {
reject('Verification failed, please login again.')
var data = response.data.result
if (!data) { // 由于mockjs 不支持自定义状态码只能这样hack
reject('error')
}
const data = response.data
if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', data.roles)
} else {
reject('getInfo: roles must be a non-null array!')
reject('getInfo: roles must be a non-null array !')
}
commit('SET_NAME', data.name)
commit('SET_AVATAR', data.avatar)
commit('SET_INTRODUCTION', data.introduction)
commit('SET_AVATAR', 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif')
commit('SET_INTRODUCTION', '我是超级管理员')
resolve(response)
}).catch(error => {
reject(error)