123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import { asyncRouterMap, constantRouterMap } from '@/router'
- /**
- * 通过meta.role判断是否与当前用户权限匹配
- * @param roles
- * @param route
- */
- function hasPermission(roles, route) {
- debugger
- if (route.meta && route.meta.roles) {
- return roles.some(role => route.meta.roles.indexOf(role) >= 0)
- } else {
- return true
- }
- }
- /**
- * 递归过滤异步路由表,返回符合用户角色权限的路由表
- * @param asyncRouterMap
- * @param roles
- */
- function filterAsyncRouter(asyncRouterMap, roles) { // 闭包查找所有该roles下的路由
- console.log(asyncRouterMap, roles)
- // debugger
- const accessedRouters = asyncRouterMap.filter(route => {
- // const temp = []
- console.log(roles, route, route.children)
- route.children = route.children.filter(v => {
- // console.log(roles, v)
- console.log(v,v.meta)
- if (v.meta && v.meta.roles && (v.meta.roles[0] == roles[0])) {
- console.log(v.meta.roles[0] == roles[0])
- return true
- } else {
- return false
- }
- })
- console.log(9,route.children)
- return route
- // if (hasPermission(roles, route.childer)) {
- // if (route.children && route.children.length) {
- // // route.children = filterAsyncRouter(route.children, roles)
- // }
- // return true
- // }
- // return false
- })
- console.log(accessedRouters)
- return accessedRouters
- }
- const permission = {
- state: {
- routers: constantRouterMap,
- addRouters: []
- },
- mutations: {
- SET_ROUTERS: (state, routers) => {
- state.addRouters = routers
- state.routers = constantRouterMap.concat(routers)
- console.log('state.routers', state.routers)
- }
- },
- actions: {
- GenerateRoutes({ commit }, data) {
- return new Promise(resolve => {
- const { roles } = data
- let accessedRouters
- console.log(asyncRouterMap, roles)
- accessedRouters = filterAsyncRouter(asyncRouterMap, roles) // 否则根据权限搜索路由
- // accessedRouters = ''
- console.log('accessedRouters', accessedRouters)
- commit('SET_ROUTERS', accessedRouters)
- resolve()
- })
- }
- }
- }
- export default permission
|