permission.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import router from './router/router'
  2. import store from './store'
  3. import { getToken } from '@/util/auth'
  4. import NProgress from 'nprogress' // progress bar
  5. import 'nprogress/nprogress.css' // progress bar style
  6. NProgress.configure({ showSpinner: false });
  7. const lockPage = store.getters.website.lockPage; //锁屏页
  8. router.beforeEach((to, from, next) => {
  9. NProgress.start()
  10. const meta = to.meta || {};
  11. if (getToken()) {
  12. if (store.getters.isLock && to.path != lockPage) {
  13. next({ path: lockPage })
  14. } else if (to.path === '/login') {
  15. next({ path: '/' })
  16. } else {
  17. if (store.getters.roles.length === 0) {
  18. store.dispatch('GetUserInfo').then(() => {
  19. next({...to, replace: true })
  20. }).catch(() => {
  21. store.dispatch('FedLogOut').then(() => {
  22. next({ path: '/login' })
  23. })
  24. })
  25. } else {
  26. if (meta.isTab !== false) {
  27. const value = to.query.src ? to.query.src : to.fullPath;
  28. const label = to.query.name ? to.query.name : to.name;
  29. store.commit('ADD_TAG', {
  30. label: label,
  31. value: value,
  32. params: to.params,
  33. query: to.query
  34. });
  35. }
  36. next()
  37. }
  38. }
  39. } else {
  40. if (meta.isAuth === false) {
  41. next()
  42. } else {
  43. next('/login')
  44. }
  45. }
  46. })
  47. router.afterEach(() => {
  48. NProgress.done();
  49. const title = store.getters.tag.label;
  50. router.$avueRouter.setTitle(title);
  51. });