打工者联盟为了抵抗996、拖欠工资、黑心老板、恶心公司,让我们组成打工者联盟。客观评价自己任职过的公司情况,为其他求职者竖起一座引路的明灯。https://book.employleague.cn/
+/** | ||
+ * 递归过滤异步路由表,返回符合用户角色权限的路由表 | ||
+ * @param asyncRouterMap | ||
+ * @param roles | ||
+ * @returns {Array.<T>|*} | ||
+ */ | ||
+function filterAsyncRouter(asyncRouterMap, roles) { | ||
+ let accessedRouters = asyncRouterMap.filter(route => { | ||
+ if(hasPermission(roles, route)) { | ||
+ if(route.children && route.children.length) { | ||
+ route.children = filterAsyncRouter(route.children, roles) | ||
+ } | ||
+ return true | ||
+ } | ||
+ return false | ||
+ }) | ||
+ return accessedRouters | ||
+} | ||
+ | ||
+ | ||
const permission = { | ||
state: { | ||
routers: constantRouterMap, | ||
@@ -25,23 +45,12 @@ const permission = { | ||
GenerateRoutes({ commit }, data) { | ||
return new Promise(resolve => { | ||
const { roles } = data; | ||
- const accessedRouters = asyncRouterMap.filter(v => { | ||
- if (roles.indexOf('admin') >= 0) return true; | ||
- if (hasPermission(roles, v)) { | ||
- if (v.children && v.children.length > 0) { | ||
- v.children = v.children.filter(child => { | ||
- if (hasPermission(roles, child)) { | ||
- return child | ||
- } | ||
- return false; | ||
- }); | ||
- return v | ||
- } else { | ||
- return v | ||
- } | ||
- } | ||
- return false; | ||
- }); | ||
+ let accessedRouters | ||
+ if (roles.indexOf('admin') >= 0) { | ||
+ accessedRouters = asyncRouterMap | ||
+ } else { | ||
+ accessedRouters = filterAsyncRouter(asyncRouterMap, roles) | ||
+ } | ||
commit('SET_ROUTERS', accessedRouters); | ||
resolve(); | ||
}) |