Blame view

src/permission.js 1.84 KB
9b7e125f   monkeyhouyi   属地页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  import router from './router'
  import store from './store'
  import { Message } from 'element-ui'
  import { getToken } from '@/utils/auth'
  import { isRelogin } from '@/utils/request'
  import NProgress from 'nprogress'
  import 'nprogress/nprogress.css'
  
  NProgress.configure({ showSpinner: false })
  const whiteList = ['/login', '/register']
  
  router.beforeEach((to, from, next) => {
      NProgress.start()
      if (getToken()) {
          /* has token*/
          if (to.path === '/login') {
              next({ path: '/' })
              NProgress.done()
          } else if (whiteList.indexOf(to.path) !== -1) {
              next()
          } else {
              if (store.getters.roles.length === 0) {
                  isRelogin.show = true
  
                  // 判断当前用户是否已拉取完user_info信息
477ec56f   monkeyhouyi   权限
26
                  store.dispatch('GetInfo').then((res) => {
9b7e125f   monkeyhouyi   属地页面
27
                      isRelogin.show = false
477ec56f   monkeyhouyi   权限
28
                      store.dispatch('generateRoutes', res).then(accessRoutes => {
477ec56f   monkeyhouyi   权限
29
                          // 根据roles权限生成可访问的路由表
0af91599   monkeyhouyi   弹框请求优化
30
                          router.addRoutes(accessRoutes) // 动态添加可访问路由表
477ec56f   monkeyhouyi   权限
31
32
                          next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
                      })
9b7e125f   monkeyhouyi   属地页面
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
                  }).catch(err => {
                      store.dispatch('LogOut').then(() => {
                          Message.error(err)
                          next({ path: '/login' })
                      })
                  })
              } else {
                  next()
              }
          }
      } else {
          // 没有token
          if (whiteList.indexOf(to.path) !== -1) {
              // 在免登录白名单,直接进入
              next()
          } else {
              next(`/login`) // 否则全部重定向到登录页
              NProgress.done()
          }
      }
  })
  
  router.afterEach(() => {
      NProgress.done()
  })