import router from './router'
import store from './store'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style

NProgress.configure({
  showSpinner: false
}) // NProgress Configuration

const loginWhiteList = ['/token/verify', '/401', '/404'] // 登录验证白名单
const permissionWhiteList = loginWhiteList.concat(['/']) // 权限验证白名单

router.beforeEach((to, from, next) => {
  // 线上注释
  // if (!store.getters.configlist || store.getters.configlist === undefined || store.getters.configlist.length <= 0) {
  //   store.dispatch('VerifyConfigList', []).then(() => {
  //     next()
  //   })
  // }
  // if (store.getters.permission_routers === undefined) {
  //   store.dispatch('xt_GenerateRoutes', []).then(() => {
  //     next()
  //   })
  // } else {
  //   next()
  // }
  // return
  // 线上注释

  NProgress.start()
  // console.log(store.getters.current_role_urls.indexOf(to.path))
  // alert('path:' + to.path)
  // 如果 url 带有 lt (login_token)参数，则跳转到验证 token 时等待的页面
  if (to.query.lt != null && to.query.lt.length > 0) {
    // alert('will go to verify token: ' + to.query.lt)
    next({
      path: '/token/verify',
      query: {
        token: to.query.lt
      }
    })

    // 否则 如果没有 user 信息，则前往 sso 登录
  } else if (store.getters.xt_user.user.id === 0) {
    if (loginWhiteList.indexOf(to.path) !== -1) {
      // alert('登录白名单内，跳过登录')
      next()
    } else {
      // alert('前往登录')
      window.location.href = process.env.BASE_API + '/login' // sso 地址
    }

    // 否则 如果当前 url 不需要验证访问权限，则通过
  } else if (permissionWhiteList.indexOf(to.path) !== -1) {
    // alert('权限验证白名单内，直接进入')
    next()

    // 否则 如果拥有当前 url 的权限，则通过
    // } else if (store.getters.current_role_urls.indexOf(to.path) !== -1) {
    //   // alert('权限验证通过')
    //   next()

    // 否则 跳转401 (未经授权)
  } else {
    // console.log(store.getters.current_role_urls)
    // console.log(store.getters.current_role_urls.indexOf(to.path))
    // alert('401')
    next()
    // next({ path: '/404' })
  }
})

router.afterEach(() => {
  NProgress.done()
})
