vue 递归过滤路由

打工者联盟为了抵抗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();
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值