import { createRouter, createWebHistory } from 'vue-router'; import HomeView from '@/views/HomeView.vue'; import { useAuthStore } from '@/stores/auth'; const router = createRouter({ history: createWebHistory(), routes: [ { path: '/login', name: 'login', component: () => import('@/views/LoginView.vue'), meta: { public: true } }, { path: '/', name: 'home', component: HomeView }, { path: '/screener', name: 'screener', component: () => import('@/views/ScreenerView.vue') }, { path: '/stocks', name: 'stocks', component: () => import('@/views/StocksView.vue') }, { path: '/etfs', name: 'etfs', component: () => import('@/views/EtfsView.vue') }, { path: '/indexes', name: 'indexes', component: () => import('@/views/IndexesView.vue') }, { path: '/indexes/:code', name: 'index-detail', component: () => import('@/views/IndexDetailView.vue') }, { path: '/backtest', name: 'backtest', component: () => import('@/views/BacktestView.vue') }, { path: '/:pathMatch(.*)*', redirect: '/' }, ], }); router.beforeEach(async (to) => { const auth = useAuthStore(); await auth.restore(); if (to.meta.public) { if (to.name === 'login' && auth.isAuthenticated) { return typeof to.query.redirect === 'string' ? to.query.redirect : '/'; } return true; } if (!auth.isAuthenticated) { return { name: 'login', query: { redirect: to.fullPath } }; } return true; }); export default router;