permission.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { asyncRouterMap } from '@/config/router.config'
  2. import { constantRouterMap } from '@/router/generator-platform-routers'
  3. /**
  4. * 过滤账户是否拥有某一个权限,并将菜单从加载列表移除
  5. *
  6. * @param permission
  7. * @param route
  8. * @returns {boolean}
  9. */
  10. function hasPermission (permission, route) {
  11. if (route.meta && route.meta.permission) {
  12. let flag = false
  13. for (let i = 0, len = permission.length; i < len; i++) {
  14. flag = route.meta.permission.includes(permission[i])
  15. if (flag) {
  16. return true
  17. }
  18. }
  19. return false
  20. }
  21. return true
  22. }
  23. /**
  24. * 单账户多角色时,使用该方法可过滤角色不存在的菜单
  25. *
  26. * @param roles
  27. * @param route
  28. * @returns {*}
  29. */
  30. // eslint-disable-next-line
  31. function hasRole(roles, route) {
  32. if (route.meta && route.meta.roles) {
  33. return route.meta.roles.includes(roles.id)
  34. } else {
  35. return true
  36. }
  37. }
  38. function filterAsyncRouter (routerMap, roles) {
  39. const accessedRouters = routerMap.filter(route => {
  40. // if (hasPermission(roles.permissionList, route)) {
  41. // if (route.children && route.children.length) {
  42. // route.children = filterAsyncRouter(route.children, roles)
  43. // }
  44. // return true
  45. // }
  46. return true
  47. // return false
  48. })
  49. return accessedRouters
  50. }
  51. const permission = {
  52. state: {
  53. routers: constantRouterMap,
  54. addRouters: []
  55. },
  56. mutations: {
  57. SET_ROUTERS: (state, routers) => {
  58. state.addRouters = routers
  59. state.routers = constantRouterMap.concat(routers)
  60. }
  61. },
  62. actions: {
  63. GenerateRoutes ({ commit }, data) {
  64. return new Promise(resolve => {
  65. const { roles } = data
  66. const accessedRouters = filterAsyncRouter(asyncRouterMap, roles)
  67. commit('SET_ROUTERS', accessedRouters)
  68. resolve()
  69. })
  70. }
  71. }
  72. }
  73. export default permission