permission.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * 全站权限配置
  3. *
  4. */
  5. import router from './router/router'
  6. import store from '@/store'
  7. import { validatenull } from '@/util/validate'
  8. import NProgress from 'nprogress' // progress bar
  9. import 'nprogress/nprogress.css' // progress bar style
  10. NProgress.configure({ showSpinner: false })
  11. router.beforeEach((to, from, next) => {
  12. // 缓冲设置
  13. if (to.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
  14. return ele.value === to.fullPath
  15. })) {
  16. to.meta.$keepAlive = true
  17. } else {
  18. NProgress.start()
  19. if (to.meta.keepAlive === true && validatenull(to.meta.$keepAlive)) {
  20. to.meta.$keepAlive = true
  21. } else {
  22. to.meta.$keepAlive = false
  23. }
  24. }
  25. const meta = to.meta || {}
  26. if (store.getters.access_token) {
  27. if (store.getters.isLock && to.path !== '/lock') {
  28. next({ path: '/lock' })
  29. } else if (to.path === '/login') {
  30. next({ path: '/' })
  31. } else {
  32. if (store.getters.roles.length === 0) {
  33. store.dispatch('GetUserInfo').then(() => {
  34. next()
  35. }).catch(() => {
  36. store.dispatch('FedLogOut').then(() => {
  37. next({ path: '/login' })
  38. })
  39. })
  40. } else {
  41. const value = to.query.src || to.fullPath
  42. const label = to.query.name || to.name
  43. if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
  44. store.commit('ADD_TAG', {
  45. label: label,
  46. value: value,
  47. params: to.params,
  48. query: to.query,
  49. group: router.$avueRouter.group || []
  50. })
  51. }
  52. next()
  53. }
  54. }
  55. } else {
  56. if (meta.isAuth === false) {
  57. next()
  58. } else {
  59. next('/login')
  60. }
  61. }
  62. })
  63. router.afterEach(() => {
  64. NProgress.done()
  65. const title = store.getters.tag.label
  66. router.$avueRouter.setTitle(title)
  67. })