mirror of
https://github.com/zclzone/vue-naive-admin.git
synced 2026-01-23 08:00:22 +08:00
58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
/**********************************
|
|
* @Author: Ronnie Zhang
|
|
* @LastEditor: Ronnie Zhang
|
|
* @LastEditTime: 2023/12/05 21:25:23
|
|
* @Email: zclzone@outlook.com
|
|
* Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
|
|
**********************************/
|
|
|
|
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
|
|
import { setupRouterGuards } from './guards'
|
|
import { useAuthStore, usePermissionStore, useUserStore } from '@/store'
|
|
import { getPermissions, getUserInfo } from '@/store/helper'
|
|
import { basicRoutes } from './basic-routes'
|
|
|
|
export const router = createRouter({
|
|
history:
|
|
import.meta.env.VITE_USE_HASH === 'true'
|
|
? createWebHashHistory(import.meta.env.VITE_PUBLIC_PATH || '/')
|
|
: createWebHistory(import.meta.env.VITE_PUBLIC_PATH || '/'),
|
|
routes: basicRoutes,
|
|
scrollBehavior: () => ({ left: 0, top: 0 }),
|
|
})
|
|
|
|
export async function setupRouter(app) {
|
|
try {
|
|
await initUserAndPermissions()
|
|
} catch (error) {
|
|
console.error('🚀 初始化失败', error)
|
|
}
|
|
setupRouterGuards(router)
|
|
app.use(router)
|
|
}
|
|
|
|
export async function initUserAndPermissions() {
|
|
const permissionStore = usePermissionStore()
|
|
const userStore = useUserStore()
|
|
const authStore = useAuthStore()
|
|
|
|
if (!authStore.accessToken) {
|
|
const route = unref(router.currentRoute)
|
|
if (route.path !== '/login') {
|
|
router.replace({
|
|
path: '/login',
|
|
query: route.query,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
const [user, permissions] = await Promise.all([getUserInfo(), getPermissions()])
|
|
userStore.setUser(user)
|
|
permissionStore.setPermissions(permissions)
|
|
const routeComponents = import.meta.glob('@/views/**/*.vue')
|
|
permissionStore.accessRoutes.forEach((route) => {
|
|
route.component = routeComponents[route.component] || undefined
|
|
!router.hasRoute(route.name) && router.addRoute(route)
|
|
})
|
|
}
|