import router from './router'
import store from './store'
import {
  unifiedLogin
} from "@/api/user-manage";
import {
  setItem,
  getItem,
  removeAllItem
} from "@/utils/storage";
// 白名单
const whiteList = ['/login', '/oatuh_login', '/404', '/401', '/focusExploration', '/clueVerification', '/deploymentApproval']
/**
 * 路由前置守卫
 * to  去哪里
 * from 来自哪
 *  next 往下走
 */
let onRun = true;
router.beforeEach(async (to, from, next) => {
  // 存在 token ，进入主页
  // if (store.state.user.token) {
  // 快捷访问
  if (store.getters.token) {
    // 判断用户资料是否获取
    // 若不存在用户信息，则需要获取用户信息
    // 触发获取用户信息的 action，并获取用户当前权限
    await store.commit('permission/setRouteReady', true)
    // 添加完动态路由之后，需要在进行一次主动跳转
    const afterMenuList = await getItem('menusPermission');
    // 处理用户权限，筛选出需要添加的权限
    if (store.state.permission.routes == 0) {
      const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
      filterRoutes.forEach(item => {
        router.addRoute(item)
      })
      next({
        ...to,
        replace: true
      })
    } else {
      next()
    }
    // 利用 addRoute 循环添加
  } else {
    const isOatuh = getItem('isOatuh')
    // 没有token的情况下，可以进入白名单
    if (whiteList.indexOf(to.path) > -1) {
      next()
    } else {
      if (isOatuh) {
        const idEntityCard = getItem('idEntityCard')
        next(`/oatuh_login?token=${Base64.encode(idEntityCard)}`)
      } else {
        next('/login')
      }
    }
  }
})
