import { createRouter, createWebHistory } from 'vue-router' import Home from '../views/Home.vue' import DashboardLayout from '../views/dashboard/DashboardLayout.vue' import Overview from '../views/dashboard/Overview.vue' import SavedStations from '../views/dashboard/SavedStations.vue' import Preferences from '../views/dashboard/Preferences.vue' import SettingsLayout from '../views/dashboard/settings/SettingsLayout.vue' import Profile from '../views/dashboard/settings/Profile.vue' import Security from '../views/dashboard/settings/Security.vue' import Appearance from '../views/dashboard/settings/Appearance.vue' import { useAuth } from '../composables/useAuth.js' const routes = [ { path: '/', component: Home, name: 'home' }, { path: '/logout', name: 'logout', component: { render: () => null }, beforeEnter: () => { window.location.href = '/logout' return false }, }, { path: '/dashboard', component: DashboardLayout, meta: { requiresAuth: true }, children: [ { path: '', component: Overview, name: 'dashboard' }, { path: 'saved-stations', component: SavedStations, name: 'dashboard.saved-stations' }, { path: 'preferences', component: Preferences, name: 'dashboard.preferences' }, { path: 'settings', component: SettingsLayout, redirect: '/dashboard/settings/profile', children: [ { path: 'profile', component: Profile, name: 'dashboard.settings.profile' }, { path: 'security', component: Security, name: 'dashboard.settings.security' }, { path: 'appearance', component: Appearance, name: 'dashboard.settings.appearance' }, ], }, ], }, ] const router = createRouter({ history: createWebHistory(), routes, }) router.beforeEach(async (to) => { if (to.meta.requiresAuth) { const { isAuthenticated, fetchUser } = useAuth() await fetchUser() if (!isAuthenticated.value) { window.location.href = '/login' return false } } }) export default router