39 lines
2.6 KiB
TypeScript
39 lines
2.6 KiB
TypeScript
import { createRouter, createWebHistory } from 'vue-router'
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes: [
|
|
{ path: '/', name: 'home', component: () => import('@/views/public/HomeView.vue') },
|
|
{ path: '/login', name: 'login', component: () => import('@/views/account/LoginView.vue') },
|
|
{ path: '/listings', name: 'listings', component: () => import('@/views/public/ListingsView.vue') },
|
|
{ path: '/listings/:id', name: 'listing-detail', component: () => import('@/views/public/ListingDetailView.vue') },
|
|
{ path: '/orders/create', name: 'order-create', component: () => import('@/views/account/OrderCreateView.vue') },
|
|
{ path: '/orders', name: 'orders', component: () => import('@/views/account/OrdersView.vue') },
|
|
{ path: '/orders/:id', name: 'order-detail', component: () => import('@/views/account/OrderDetailView.vue') },
|
|
{ path: '/wallet', name: 'wallet', component: () => import('@/views/account/WalletView.vue') },
|
|
{ path: '/notifications', name: 'notifications', component: () => import('@/views/account/NotificationsView.vue') },
|
|
{ path: '/realname', name: 'realname', component: () => import('@/views/account/RealnameView.vue') },
|
|
{ path: '/seller/listings', name: 'seller-listings', component: () => import('@/views/seller/SellerListingsView.vue') },
|
|
{ path: '/seller/listings/create', name: 'seller-listing-create', component: () => import('@/views/seller/SellerListingCreateView.vue') },
|
|
{ path: '/seller/handoffs', name: 'seller-handoffs', component: () => import('@/views/seller/SellerHandoffsView.vue') },
|
|
{ path: '/seller/earnings', name: 'seller-earnings', component: () => import('@/views/seller/SellerEarningsView.vue') },
|
|
{ path: '/admin/login', name: 'admin-login', component: () => import('@/views/admin/AdminLoginView.vue') },
|
|
{ path: '/admin/dashboard', name: 'admin-dashboard', component: () => import('@/views/admin/AdminDashboardView.vue') },
|
|
{ path: '/admin/listings/review', name: 'admin-listing-review', component: () => import('@/views/admin/AdminListingReviewView.vue') },
|
|
{ path: '/admin/disputes', name: 'admin-disputes', component: () => import('@/views/admin/AdminDisputesView.vue') },
|
|
{ path: '/admin/system-configs', name: 'admin-system-configs', component: () => import('@/views/admin/AdminSystemConfigsView.vue') },
|
|
],
|
|
})
|
|
|
|
router.beforeEach((to) => {
|
|
if (to.path.startsWith('/admin') && to.path !== '/admin/login') {
|
|
const token = localStorage.getItem('admin_access_token')
|
|
if (!token) {
|
|
return '/admin/login'
|
|
}
|
|
}
|
|
return true
|
|
})
|
|
|
|
export default router
|