index.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import store from '@/store/index';
  4. const jwt = require('jsonwebtoken');
  5. Vue.use(VueRouter);
  6. const routes = [
  7. {
  8. path: '/',
  9. meta: { title: 'index', isleftarrow: false },
  10. component: () => import('../views/index.vue'),
  11. },
  12. // 文章辟谣
  13. {
  14. path: '/refute/index',
  15. meta: { title: 'refute_index', isleftarrow: false },
  16. component: () => import('../views/refute/index.vue'),
  17. },
  18. // 社区话题
  19. {
  20. path: '/community/index',
  21. meta: { title: 'community_index', isleftarrow: false },
  22. component: () => import('../views/community/index.vue'),
  23. },
  24. // 个人中心
  25. {
  26. path: '/center/index',
  27. meta: { title: 'center_index', isleftarrow: false },
  28. component: () => import('../views/center/index.vue'),
  29. },
  30. ];
  31. const router = new VueRouter({
  32. mode: 'history',
  33. base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
  34. routes,
  35. });
  36. router.beforeEach(async (to, form, next) => {
  37. if (to.name == 'account_user') {
  38. let res = await store.dispatch('login/toGetUser');
  39. if (res && res.uid) {
  40. next();
  41. } else {
  42. let key = sessionStorage.getItem('token');
  43. let user = jwt.decode(key);
  44. if (user && user.uid) {
  45. store.commit('setUser', user, { root: true });
  46. next();
  47. } else {
  48. next({ name: 'login' });
  49. }
  50. }
  51. } else {
  52. let res = await store.dispatch('login/toGetUser');
  53. next();
  54. }
  55. });
  56. const originalPush = VueRouter.prototype.push;
  57. VueRouter.prototype.push = function push(location, onResolve, onReject) {
  58. if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject);
  59. return originalPush.call(this, location).catch(err => err);
  60. };
  61. export default router;