permission.js 1013 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import router from './router'
  2. import store from './store'
  3. import NProgress from 'nprogress' // progress bar
  4. import 'nprogress/nprogress.css' // progress bar style
  5. import { cancelRequest } from './utils/request'
  6. NProgress.configure({ showSpinner: false }) // NProgress Configuration
  7. const whiteList = ['/error'] // no redirect whitelist
  8. router.beforeEach((to, from, next) => {
  9. cancelRequest()
  10. // start progress bar
  11. NProgress.start()
  12. if (store.getters.isValid) {
  13. if (to.path === '/error') {
  14. // redirect to the home page
  15. next({ path: '/' })
  16. NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
  17. } else {
  18. next()
  19. }
  20. } else if (whiteList.includes(to.path)) {
  21. // in the free login whitelist, go directly
  22. next()
  23. } else {
  24. // other pages that do not have permission to access are redirected to the login page.
  25. next('/error')
  26. NProgress.done()
  27. }
  28. })
  29. router.afterEach(() => {
  30. // finish progress bar
  31. NProgress.done()
  32. })