permission.js 1.87 KB
import router from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken, setToken } from '@/utils/auth'


NProgress.configure({ showSpinner: false })

const whiteList = []

router.beforeEach(async(to, from, next) => {
  NProgress.start()
  setToken('admin')
  const hasToken = getToken()
  
  if (hasToken) {
    // if (to.path === '/login') {} else {}
    // const hasRoles = store.getters.roles && store.getters.roles.length > 0
    // if (hasRoles) {
      // if(to.path === '/') {
        // next({ path: '/client/index' })
      // }
      // next()
      // next({ path: '/' })
      // next({ ...to })
    // } else {
      try {
        // get user info
        // note: roles must be a object array! such as : ['admin'] or ['developer', 'editor']
        // const { roles } = await store.dispatch('user/getInfo')
        // roles = ['admin'];
        // generate accessible routes map based on roles
        const accessRoutes = await store.dispatch('permission/generateRoutes', ['admin'])
        // dynamically add accessible routes
        router.addRoutes(accessRoutes)

        // hack method ro ensure that addRoutes is complete
        // set the replace: true, so the navigation will not leave a history record
        // next({ ...to, replace: true })
        next()
      } catch (error) {
        // remove token and go to login page to re-login
        console.log(error)
        // await store.dispatch('user/resetToken')
        // Message.error(error || 'Has Error')
        // next(`/login?redirect=${to.path}`)
        NProgress.done()
      }
    // }
  } else {
    /* has no token */

    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next()
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})