|
@ -1,16 +1,22 @@
|
1
|
1
|
import { asyncRoutes, constantRoutes } from '@/routes'
|
2
|
|
|
3
|
2
|
/*
|
4
|
3
|
* Use meta.role to determine if the current user has permission
|
5
|
4
|
* @param roles
|
6
|
5
|
* @param route
|
7
|
6
|
*/
|
8
|
|
function hasPermission(roles, route) {
|
9
|
|
if (route.meta && route.meta.roles) {
|
10
|
|
return roles.some(role => route.meta.roles.includes(role))
|
11
|
|
} else {
|
12
|
|
return true
|
13
|
|
}
|
|
7
|
function hasPermission (permission, route) {
|
|
8
|
// if (route.meta && route.meta.roles) {
|
|
9
|
// return roles.some(role => route.meta.roles.includes(role))
|
|
10
|
// } else {
|
|
11
|
// return true
|
|
12
|
// }
|
|
13
|
var x = false
|
|
14
|
permission.forEach(e => {
|
|
15
|
if (e[0] === route.path) {
|
|
16
|
x = true
|
|
17
|
}
|
|
18
|
})
|
|
19
|
return x
|
14
|
20
|
}
|
15
|
21
|
|
16
|
22
|
/**
|
|
@ -18,20 +24,33 @@ function hasPermission(roles, route) {
|
18
|
24
|
* @param routes asyncRoutes
|
19
|
25
|
* @param roles
|
20
|
26
|
*/
|
21
|
|
export function filterAsyncRoutes(routes, roles) {
|
22
|
|
const res = []
|
|
27
|
// export function filterAsyncRoutes (routes, roles) {
|
|
28
|
// const res = []
|
23
|
29
|
|
24
|
|
routes.forEach(route => {
|
25
|
|
const tmp = { ...route }
|
26
|
|
if (hasPermission(roles, tmp)) {
|
27
|
|
if (tmp.children) {
|
28
|
|
tmp.children = filterAsyncRoutes(tmp.children, roles)
|
|
30
|
// routes.forEach(route => {
|
|
31
|
// const tmp = { ...route }
|
|
32
|
// if (hasPermission(roles, tmp)) {
|
|
33
|
// if (tmp.children) {
|
|
34
|
// tmp.children = filterAsyncRoutes(tmp.children, roles)
|
|
35
|
// }
|
|
36
|
// res.push(tmp)
|
|
37
|
// }
|
|
38
|
// })
|
|
39
|
|
|
40
|
// return res
|
|
41
|
// }
|
|
42
|
function filterAsyncRoutes (routerMap, roles, map) {
|
|
43
|
const accessedRouters = routerMap.filter(route => {
|
|
44
|
// if (hasPermission(roles.permissionList, route) && map[route.path] || route.path === '/') {
|
|
45
|
if (hasPermission(map, route) || route.path === '/') {
|
|
46
|
if (route.children && route.children.length) {
|
|
47
|
route.children = filterAsyncRoutes(route.children, roles, map)
|
29
|
48
|
}
|
30
|
|
res.push(tmp)
|
|
49
|
return true
|
31
|
50
|
}
|
|
51
|
return false
|
32
|
52
|
})
|
33
|
|
|
34
|
|
return res
|
|
53
|
return accessedRouters
|
35
|
54
|
}
|
36
|
55
|
|
37
|
56
|
const state = {
|
|
@ -47,16 +66,25 @@ const mutations = {
|
47
|
66
|
}
|
48
|
67
|
|
49
|
68
|
const actions = {
|
50
|
|
generateRoutes({ commit }, roles) {
|
|
69
|
// generateRoutes ({ commit }, roles) {
|
|
70
|
// return new Promise(resolve => {
|
|
71
|
// let accessedRoutes
|
|
72
|
// if (roles.includes('admin')) {
|
|
73
|
// accessedRoutes = asyncRoutes || []
|
|
74
|
// } else {
|
|
75
|
// accessedRoutes = filterAsyncRoutes(asyncRoutes, roles,menus)
|
|
76
|
// }
|
|
77
|
// commit('SET_ROUTES', accessedRoutes)
|
|
78
|
// resolve(accessedRoutes)
|
|
79
|
// })
|
|
80
|
// }
|
|
81
|
generateRoutes ({ commit }, roles) {
|
|
82
|
var menus = JSON.parse(localStorage.getItem('menus'))
|
51
|
83
|
return new Promise(resolve => {
|
52
|
|
let accessedRoutes
|
53
|
|
if (roles.includes('admin')) {
|
54
|
|
accessedRoutes = asyncRoutes || []
|
55
|
|
} else {
|
56
|
|
accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
|
57
|
|
}
|
58
|
|
commit('SET_ROUTES', accessedRoutes)
|
59
|
|
resolve(accessedRoutes)
|
|
84
|
let accessedRouters
|
|
85
|
accessedRouters = filterAsyncRoutes(asyncRoutes, roles, menus)
|
|
86
|
commit('SET_ROUTES', accessedRouters)
|
|
87
|
resolve()
|
60
|
88
|
})
|
61
|
89
|
}
|
62
|
90
|
}
|