1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { asyncRouterMap, constantRouterMap } from '@/config/router.config'
- function hasPermission (permission, route) {
- if (route.meta && route.meta.permission) {
- let flag = false
- for (let i = 0, len = permission.length; i < len; i++) {
- flag = route.meta.permission.includes(permission[i])
- if (flag) {
- return true
- }
- }
- return false
- }
- return true
- }
- function hasRole(roles, route) {
- if (route.meta && route.meta.roles) {
- return route.meta.roles.includes(roles.id)
- } else {
- return true
- }
- }
- function filterAsyncRouter (routerMap, roles) {
- const accessedRouters = routerMap.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 = {
- namespaced: true,
- state: {
- routers: constantRouterMap,
- addRouters: []
- },
- mutations: {
- SET_ROUTERS: (state, routers) => {
- state.addRouters = routers
- state.routers = constantRouterMap.concat(routers)
- }
- },
- actions: {
- GenerateRoutes ({ commit }, data) {
- return new Promise(resolve => {
-
- console.log('GenerateRoutesGenerateRoutesGenerateRoutes:', JSON.parse(JSON.stringify(asyncRouterMap)), data)
- const accessedRouters = filterAsyncRouter(asyncRouterMap, data)
- commit('SET_ROUTERS', accessedRouters)
- resolve(accessedRouters)
- })
- }
- }
- }
- export default permission
|