Files
pokemon-inventory/apps/web/src/router/index.js
T
2026-09-10 06:46:11 -04:00

49 lines
2.2 KiB
JavaScript

import { createRouter, createWebHistory } from 'vue-router';
import CatalogPage from '@/pages/CatalogPage.vue';
import ListingDetailPage from '@/pages/ListingDetailPage.vue';
import ProductDetailPage from '@/pages/ProductDetailPage.vue';
import AdminHomePage from '@/pages/AdminHomePage.vue';
import AdminShell from '@/pages/AdminShell.vue';
import LoginPage from '@/pages/LoginPage.vue';
import { useAuth } from '@/composables/useAuth.js';
import AdminImagePage from '@/pages/AdminImagePage.vue';
import AdminSettingsPage from '@/pages/AdminSettingsPage.vue';
import AdminSavedViewsPage from '@/pages/AdminSavedViewsPage.vue';
import AdminListingsPage from '@/pages/AdminListingsPage.vue';
import AdminSalesPage from '@/pages/AdminSalesPage.vue';
import AdminAcquisitionsPage from '@/pages/AdminAcquisitionsPage.vue';
import AdminInventoryPage from '@/pages/AdminInventoryPage.vue';
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', name: 'catalog', component: CatalogPage },
{ path: '/listings/:id', name: 'listing-detail', component: ListingDetailPage },
{ path: '/products/:slug', name: 'product-detail', component: ProductDetailPage },
{ path: '/login', name: 'login', component: LoginPage },
{
path: '/admin',
component: AdminShell,
children: [
{ path: '', name: 'admin-home', component: AdminHomePage },
{ path: 'inventory/:id/images', name: 'admin-image-manager', component: AdminImagePage },
{ path: 'inventory', name: 'admin-inventory', component: AdminInventoryPage },
{ path: 'listings', name: 'admin-listings', component: AdminListingsPage },
{ path: 'sales', name: 'admin-sales', component: AdminSalesPage },
{ path: 'acquisitions', name: 'admin-acquisitions', component: AdminAcquisitionsPage },
{ path: 'settings', name: 'admin-settings', component: AdminSettingsPage },
{ path: 'saved-views', name: 'admin-saved-views', component: AdminSavedViewsPage },
],
},
],
});
export default router;
const auth = useAuth();
router.beforeEach(async (to) => {
if (!to.path.startsWith('/admin')) return true;
if (!auth.isAuthenticated.value) await auth.load();
return auth.isAuthenticated.value ? true : { name: 'login' };
});