import router from './index';
import store from '@/store/index';
import {
  Message
} from 'element-ui';
import {
  getToken
} from '@/utils/auth';

// 路由前置守卫
router.beforeEach((to, from, next) => {
  to.meta?.title && (document.title = to.meta.title);
  // 从cookie中获取token
  if (getToken()) {
    /**
     * 判断前往的path是否为登录页
     * 是重定向
     * 否则根据用户基本信息 获取当前状态
     */
    // 跳转拉取用户基本信息
    if (!store.state.user.userInfo?.userId) {
      store.dispatch("user/getUserInfo").then(() => {
        next({path : "/home"});
      })
        .catch(err => {
          Message.error(err.msg || "获取用户信息失败!");
          store.dispatch('user/loginOut').finally(() => {
            location.href = '/login';
          });
        });
    } else {
      next();
    }
  } else {
    /**
     * 判断当前前往页面是否需要token
     * 不匹配 以及 未带token重定向到登录页
     */
    if (to.meta?.needToken === false) {
      next();
    } else {
      next();
    }
  }
});