| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import { createRouter, createWebHistory } from 'vue-router'
- import MainView from '@/views/MainView.vue'
- import DashboardView from '@/views/DashboardView.vue'
- import LoginView from '@/views/LoginView.vue'
- import { useUserStore } from '@/stores/user'
- const router = createRouter({
- history: createWebHistory(import.meta.env.BASE_URL),
- routes: [
- {
- path: '/',
- redirect: '/main/dashboard'
- },
- {
- path: '/main',
- component: MainView,
- meta: { requiresAuth: true },
- children: [
- {
- path: '',
- redirect: '/main/dashboard'
- },
- {
- path: 'dashboard',
- name: 'dashboard',
- component: DashboardView
- },
- {
- path: 'user',
- name: 'user',
- component: () => import('@/views/UserView.vue')
- },
- {
- path: 'records',
- name: 'records',
- component: () => import('@/views/RecordsView.vue')
- }
- ]
- },
- {
- path: '/login',
- name: 'login',
- component: LoginView,
- meta: { guest: true }
- },
- {
- path: '/:pathMatch(.*)*',
- redirect: '/main/dashboard'
- }
- ]
- })
- router.beforeEach(async (to, from, next) => {
- const userStore = useUserStore()
- if (to.meta.requiresAuth) {
- if (userStore.token && userStore.userInfo.id) {
- next()
- } else if (userStore.token) {
- await userStore.sync()
- next()
- } else {
- next('/login')
- }
- } else if (to.path === '/login' && userStore.token) {
- next('/')
- } else {
- next()
- }
- })
- export default router
|