permission.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. const value = to.query.src || to.fullPath
  33. const label = to.query.name || to.name
  34. if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
  35. store.commit('ADD_TAG', {
  36. label: label,
  37. value: value,
  38. params: to.params,
  39. query: to.query,
  40. group: router.$avueRouter.group || []
  41. })
  42. }
  43. next()
  44. }
  45. } else {
  46. if (meta.isAuth === false) {
  47. next()
  48. } else {
  49. next('/login')
  50. }
  51. }
  52. })
  53. router.afterEach(() => {
  54. NProgress.done()
  55. const title = store.getters.tag.label
  56. router.$avueRouter.setTitle(title)
  57. })