import Vue from 'vue'
import Router from 'vue-router'
import ViewUI from 'view-design'
import store from 'store'

import { getToken, setToken } from 'libs/token'
// import { turnTo } from 'libs/tools'

import routes from './routes'

Vue.use(Router)

const router = new Router({
  // mode: 'history',
  routes
})

// 定义登录页面路由name
const LOGIN_PAGE_NAME = 'login'
// // 定义首页页面路由name
// const GUIDE_PAGE_NAME = 'guide'

const needVerify = true

// 添加路由钩子
router.beforeEach((to, form, next) => {
  ViewUI.LoadingBar.start()

  const token = getToken()
  next()
  if (!needVerify || to.name === 'test') {
    next()
  } else if (!token && to.name !== LOGIN_PAGE_NAME) {
    // 未登录且要跳转的页面不是登录页
    next({
      name: LOGIN_PAGE_NAME // 跳转到登录页
    })
  } else if (!token && to.name === LOGIN_PAGE_NAME) {
    // 未登录且要跳转登录页，直接跳转
    next()
  } else if (token && to.name === LOGIN_PAGE_NAME) {
    // 已登录且要跳转登录页，此时需要重定向到首页
    next({
      name: GUIDE_PAGE_NAME
    })
  } else {
    next()
    // 这里做鉴权处理
    // 从状态管理仓库获取登录用户信息，access必须是一个数组，如：['super_admin'] ['super_admin', 'admin']
    // if (store.state.user.hasAccess) {
    //   turnTo(to, store.state.user.access, next)
    // } else {
    //   // 拉取用户信息，通过用户权限和跳转的页面的name来判断是否有权限访问;
    //   store.dispatch('checkRole').then(user => {
    //     turnTo(to, user.access, next)
    //   }).catch(() => {
    //     setToken('')
    //     next({
    //       name: 'login'
    //     })
    //   })

    //   store.dispatch('userGetRole')
    // }
  }
})

router.afterEach(
  to => {
    ViewUI.LoadingBar.finish()
  }
)

export default router
