Blame view

src/permission.js 2.27 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
29
30
31
32
33
34
35
36
37
38
39
40
                      store.dispatch('generateRoutes', res).then(accessRoutes => {
                          console.log(accessRoutes);
                          // 根据roles权限生成可访问的路由表
                          // router.addRoutes(accessRoutes) // 动态添加可访问路由表
                          console.log(router.addRoutes);
                          router.addRoutes([{
                              path: '/404',
                              component: (resolve) => require(['@/views/error-page/404'], resolve),
                              hidden: true
                          }]) // 动态添加可访问路由表
                          console.log(router);
                          next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
                      })
9b7e125f   monkeyhouyi   属地页面
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
                  }).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()
  })