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: 'wallet', name: 'wallet', component: () => import('@/views/WalletView.vue') }, { path: 'device', name: 'device', component: () => import('@/views/DeviceView.vue') }, { path: 'tg-user', name: 'tg-user', component: () => import('@/views/TgUserView.vue') }, { path: 'replacement', name: 'replacement', component: () => import('@/views/ReplacementView.vue') }, { path: 'user', name: 'user', component: () => import('@/views/UserView.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