1
0
mirror of https://github.com/zclzone/vue-naive-admin.git synced 2025-12-28 12:10:20 +08:00

refactor: dynamic routes

This commit is contained in:
张传龙
2022-09-18 15:10:22 +08:00
parent 30211e14ea
commit bdbe9b8483
5 changed files with 50 additions and 38 deletions

View File

@@ -1,13 +1,8 @@
import { useUserStore } from '@/store/modules/user'
import { usePermissionStore } from '@/store/modules/permission'
import { NOT_FOUND_ROUTE } from '@/router/routes'
import { getToken, refreshAccessToken } from '@/utils/token'
import { isNullOrWhitespace } from '@/utils/is'
const WHITE_LIST = ['/login', '/404']
export function createPermissionGuard(router) {
const userStore = useUserStore()
const permissionStore = usePermissionStore()
router.beforeEach(async (to) => {
const token = getToken()
@@ -18,25 +13,9 @@ export function createPermissionGuard(router) {
}
/** 有token的情况 */
if (to.path === '/login') return { path: '/', replace: true }
if (to.path === '/404') return true
if (to.path === '/login') return { path: '/' }
// 已经拿到用户信息
if (userStore.userId) {
refreshAccessToken()
return true
}
try {
await userStore.getUserInfo()
const accessRoutes = permissionStore.generateRoutes(userStore.role)
accessRoutes.forEach((route) => {
!router.hasRoute(route.name) && router.addRoute(route)
})
router.addRoute(NOT_FOUND_ROUTE)
return { ...to, replace: true }
} catch (error) {
console.error(error)
return
}
refreshAccessToken()
return true
})
}