permission.js 888 B

123456789101112131415161718192021222324252627282930313233
  1. import router from './router'
  2. import { getAccessToken, removeAll } from '@/utils/auth'
  3. import store from '@/store'
  4. router.beforeEach((to, from, next) => {
  5. // document.title = to.meta.title
  6. const needAuth = to.meta.needAuth
  7. const token = getAccessToken()
  8. if (token != null) {
  9. if (to.path === '/login' || to.path === '/register') {
  10. next({ path: '/' })
  11. } else {
  12. const hasRoles = store.getters.roles.length > 0
  13. if (hasRoles) {
  14. next()
  15. } else {
  16. const roles = store.dispatch('getUserRoles')
  17. const accessRoutes = store.dispatch('generateRoutes', roles)
  18. accessRoutes.then(allRoutes => {
  19. router.addRoutes(allRoutes)
  20. next({ ...to, replace: true })
  21. })
  22. }
  23. }
  24. } else {
  25. removeAll()
  26. if (needAuth === undefined || needAuth) {
  27. next('/login')
  28. } else {
  29. next()
  30. }
  31. }
  32. })