49 lines
2.2 KiB
JavaScript
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' };
|
|
}); |