import { createRouter, createWebHistory } from 'vue-router' import { getCurrentUser } from '@/services/authService' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/login', name: 'login', component: () => import('@/views/auth/LoginView.vue'), meta: { guest: true, hideNav: true }, }, { path: '/register', name: 'register', component: () => import('@/views/auth/RegisterView.vue'), meta: { guest: true, hideNav: true }, }, { path: '/otp', name: 'otp', component: () => import('@/views/auth/OtpView.vue'), meta: { guest: true, hideNav: true }, }, { path: '/', name: 'home', component: () => import('@/views/companies/CompanySelectView.vue'), meta: { requiresAuth: true }, }, { path: '/companies/:companyId/catalogs', name: 'catalogs', component: () => import('@/views/catalogs/CatalogListView.vue'), meta: { requiresAuth: true }, }, { path: '/companies/:companyId/catalogs/:catalogId/products', name: 'products', component: () => import('@/views/products/ProductListView.vue'), meta: { requiresAuth: true }, }, { path: '/cart', name: 'cart', component: () => import('@/views/cart/CartView.vue'), meta: { requiresAuth: true }, }, { path: '/checkout/settlement', name: 'settlement', component: () => import('@/views/checkout/SettlementTypeView.vue'), meta: { requiresAuth: true, hideNav: true }, }, { path: '/checkout/cash', name: 'cash-settlement', component: () => import('@/views/checkout/CashSettlementView.vue'), meta: { requiresAuth: true, hideNav: true }, }, { path: '/checkout/check-mode', name: 'check-mode', component: () => import('@/views/checkout/CheckModeSelectView.vue'), meta: { requiresAuth: true, hideNav: true }, }, { path: '/checkout/check-form', name: 'check-form', component: () => import('@/views/checkout/CheckFormView.vue'), meta: { requiresAuth: true, hideNav: true }, }, { path: '/checkout/check-list', name: 'check-list', component: () => import('@/views/checkout/CheckListView.vue'), meta: { requiresAuth: true, hideNav: true }, }, { path: '/orders', name: 'orders', component: () => import('@/views/OrdersView.vue'), meta: { requiresAuth: true }, }, { path: '/orders/:id', name: 'order-detail', component: () => import('@/views/orders/OrderDetailView.vue'), meta: { requiresAuth: true }, }, { path: '/orders/:id/success', name: 'order-success', component: () => import('@/views/orders/OrderSuccessView.vue'), meta: { requiresAuth: true, hideNav: true }, }, { path: '/profile', name: 'profile', component: () => import('@/views/profile/ProfileView.vue'), meta: { requiresAuth: true }, }, { path: '/profile/edit', name: 'profile-edit', component: () => import('@/views/profile/ProfileEditView.vue'), meta: { requiresAuth: true }, }, { path: '/profile/security', name: 'profile-security', component: () => import('@/views/profile/ProfileSecurityView.vue'), meta: { requiresAuth: true }, }, { path: '/profile/notifications', name: 'profile-notifications', component: () => import('@/views/profile/ProfileNotificationsView.vue'), meta: { requiresAuth: true }, }, { path: '/profile/display', name: 'profile-display', component: () => import('@/views/profile/ProfileDisplayView.vue'), meta: { requiresAuth: true }, }, { path: '/profile/checks', name: 'profile-checks', component: () => import('@/views/profile/ProfileChecksView.vue'), meta: { requiresAuth: true }, }, ], scrollBehavior() { return { top: 0 } }, }) router.beforeEach((to) => { const isAuthenticated = !!getCurrentUser() if (to.meta.requiresAuth && !isAuthenticated) { return { name: 'login', query: { redirect: to.fullPath } } } if (to.meta.guest && isAuthenticated) { return { name: 'home' } } return true }) export default router