permisssion.js
815 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { constantRoutes, asyncRoutes } from '@/router'
function hasPermission(roles, route) {
if (route.meta && route.meta.roles) {
return route.meta.roles.includes(roles)
} else {
return true
}
}
function filterAsyncRoutes(routes, roles) {
const res = []
routes.forEach(route => {
const temp = { ...route }
if (hasPermission(roles, temp)) {
if (temp.children) {
temp.children = filterAsyncRoutes(temp.children, roles)
}
res.push(temp)
}
})
return res
}
const state = {
routes: [],
addRoutes: []
}
const mutations = {
SET_ROUTES: (state, payload) => {
state.addRoutes = filterAsyncRoutes(asyncRoutes, payload.roles)
state.routes = constantRoutes.concat(state.addRoutes)
}
}
export default {
namespaced: true,
state,
mutations
}