permission.js 960 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import router from './router'
  2. import store from './store'
  3. import NProgress from 'nprogress' // Progress 进度条
  4. import 'nprogress/nprogress.css'// Progress 进度条样式
  5. import { getToken } from '@/utils/auth' // 验权
  6. const whiteList = ['/login']
  7. router.beforeEach((to, from, next) => {
  8. NProgress.start()
  9. if (getToken()) {
  10. if (to.path === '/login') {
  11. next({ path: '/' })
  12. } else {
  13. if (store.getters.roles.length === 0) {
  14. store.dispatch('GetInfo').then(res => {
  15. const roles = res.data.role
  16. store.dispatch('GenerateRoutes', { roles }).then(() => {
  17. router.addRoutes(store.getters.addRouters)
  18. next({ ...to })
  19. })
  20. })
  21. } else {
  22. next()
  23. }
  24. }
  25. } else {
  26. if (whiteList.indexOf(to.path) !== -1) {
  27. next()
  28. } else {
  29. next('/login')
  30. NProgress.done()
  31. }
  32. }
  33. })
  34. router.afterEach(() => {
  35. NProgress.done() // 结束Progress
  36. })