11import { asyncRouterMap , constantRouterMap } from 'src/router' ;
22
3+ /**
4+ * 通过meta.role判断是否与当前用户权限匹配
5+ * @param roles
6+ * @param route
7+ */
38function hasPermission ( roles , route ) {
49 if ( route . meta && route . meta . role ) {
510 return roles . some ( role => route . meta . role . indexOf ( role ) >= 0 )
@@ -12,39 +17,35 @@ function hasPermission(roles, route) {
1217 * 递归过滤异步路由表,返回符合用户角色权限的路由表
1318 * @param asyncRouterMap
1419 * @param roles
15- * @returns {Array.<T>|* }
1620 */
1721function filterAsyncRouter ( asyncRouterMap , roles ) {
18- let accessedRouters = asyncRouterMap . filter ( route => {
19- if ( hasPermission ( roles , route ) ) {
20- if ( route . children && route . children . length ) {
21- route . children = filterAsyncRouter ( route . children , roles )
22- }
23- return true
24- }
25- return false
26- } )
27- return accessedRouters
22+ const accessedRouters = asyncRouterMap . filter ( route => {
23+ if ( hasPermission ( roles , route ) ) {
24+ if ( route . children && route . children . length ) {
25+ route . children = filterAsyncRouter ( route . children , roles )
26+ }
27+ return true
28+ }
29+ return false
30+ } )
31+ return accessedRouters
2832}
2933
30-
3134const permission = {
3235 state : {
3336 routers : constantRouterMap ,
3437 addRouters : [ ]
3538 } ,
36-
3739 mutations : {
3840 SET_ROUTERS : ( state , routers ) => {
3941 state . addRouters = routers ;
4042 state . routers = constantRouterMap . concat ( routers ) ;
4143 }
4244 } ,
43-
4445 actions : {
4546 GenerateRoutes ( { commit } , data ) {
4647 return new Promise ( resolve => {
47- const { roles } = data ;
48+ const { roles } = data
4849 let accessedRouters
4950 if ( roles . indexOf ( 'admin' ) >= 0 ) {
5051 accessedRouters = asyncRouterMap
@@ -58,5 +59,4 @@ const permission = {
5859 }
5960} ;
6061
61-
6262export default permission ;
0 commit comments