xt_permission.js 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import router from './router'
  2. import store from './store'
  3. import NProgress from 'nprogress' // progress bar
  4. import 'nprogress/nprogress.css'// progress bar style
  5. NProgress.configure({ showSpinner: false })// NProgress Configuration
  6. const loginWhiteList = ['/token/verify', '/401', '/404'] // 登录验证白名单
  7. const permissionWhiteList = loginWhiteList.concat(['/']) // 权限验证白名单
  8. router.beforeEach((to, from, next) => {
  9. // 线上注释
  10. if (store.getters.permission_routers === undefined) {
  11. store.dispatch('xt_GenerateRoutes', []).then(() => {
  12. next()
  13. })
  14. } else {
  15. next()
  16. }
  17. return
  18. // 线上注释
  19. NProgress.start()
  20. // console.log(store.getters.current_role_urls.indexOf(to.path))
  21. // alert('path:' + to.path)
  22. // 如果 url 带有 lt (login_token)参数,则跳转到验证 token 时等待的页面
  23. if (to.query.lt != null && to.query.lt.length > 0) {
  24. // alert('will go to verify token: ' + to.query.lt)
  25. next({ path: '/token/verify', query: { token: to.query.lt }})
  26. // 否则 如果没有 user 信息,则前往 sso 登录
  27. } else if (store.getters.xt_user.user.id === 0) {
  28. if (loginWhiteList.indexOf(to.path) !== -1) {
  29. // alert('登录白名单内,跳过登录')
  30. next()
  31. } else {
  32. // alert('前往登录')
  33. window.location.href = process.env.BASE_API + '/login' // sso 地址
  34. }
  35. // 否则 如果当前 url 不需要验证访问权限,则通过
  36. } else if (permissionWhiteList.indexOf(to.path) !== -1) {
  37. // alert('权限验证白名单内,直接进入')
  38. next()
  39. // 否则 如果拥有当前 url 的权限,则通过
  40. // } else if (store.getters.current_role_urls.indexOf(to.path) !== -1) {
  41. // // alert('权限验证通过')
  42. // next()
  43. // 否则 跳转401 (未经授权)
  44. } else {
  45. // console.log(store.getters.current_role_urls)
  46. // console.log(store.getters.current_role_urls.indexOf(to.path))
  47. // alert('401')
  48. next()
  49. // next({ path: '/404' })
  50. }
  51. })
  52. router.afterEach(() => {
  53. NProgress.done()
  54. })