2026-02-21 09:53:31 -05:00
|
|
|
/** Vue Router configuration */
|
|
|
|
|
import { createRouter, createWebHistory } from 'vue-router'
|
|
|
|
|
|
|
|
|
|
const router = createRouter({
|
|
|
|
|
history: createWebHistory(import.meta.env.BASE_URL),
|
|
|
|
|
routes: [
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
// ─── Vistas Públicas Core (cargadas en el chunk principal) ───────────
|
2026-02-21 09:53:31 -05:00
|
|
|
{
|
|
|
|
|
path: '/',
|
|
|
|
|
name: 'splash',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "splash" */ '@/views/SplashScreen.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/map',
|
|
|
|
|
name: 'map',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "map" */ '@/views/MapView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
|
|
|
|
{
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
path: '/login',
|
|
|
|
|
name: 'auth',
|
|
|
|
|
component: () => import(/* webpackChunkName: "auth" */ '@/views/AuthView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
|
|
|
|
|
// ─── Vistas de Transporte (chunk: transport) ─────────────────────────
|
2026-02-21 09:53:31 -05:00
|
|
|
{
|
|
|
|
|
path: '/routes',
|
|
|
|
|
name: 'routes',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "transport" */ '@/views/RoutesView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/schedules',
|
|
|
|
|
name: 'schedules',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "transport" */ '@/views/SchedulesView.vue'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/bus-stop/:id',
|
|
|
|
|
name: 'bus-stop-details',
|
|
|
|
|
component: () => import(/* webpackChunkName: "transport" */ '@/views/BusStopDetailsView.vue'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/taxi',
|
|
|
|
|
name: 'taxi',
|
|
|
|
|
component: () => import(/* webpackChunkName: "transport" */ '@/views/TaxiView.vue'),
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ─── Vistas de Descubrir (chunk: discover) ───────────────────────────
|
|
|
|
|
{
|
|
|
|
|
path: '/discover',
|
|
|
|
|
name: 'discover',
|
|
|
|
|
component: () => import(/* webpackChunkName: "discover" */ '@/views/DiscoverView.vue'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/business/:id',
|
|
|
|
|
name: 'business-details',
|
|
|
|
|
component: () => import(/* webpackChunkName: "discover" */ '@/views/BusinessDetailsView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/coupons',
|
|
|
|
|
name: 'coupons',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "discover" */ '@/views/CouponsView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
|
|
|
|
|
// ─── Vistas de Usuario (chunk: user) ─────────────────────────────────
|
2026-02-21 09:53:31 -05:00
|
|
|
{
|
|
|
|
|
path: '/favorites',
|
|
|
|
|
name: 'favorites',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "user" */ '@/views/FavoritesView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/profile',
|
|
|
|
|
name: 'profile',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "user" */ '@/views/ProfileView.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true }
|
|
|
|
|
},
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
|
|
|
|
|
// ─── Vistas de Admin (chunk: admin — solo carga para admins) ─────────
|
2026-02-21 09:53:31 -05:00
|
|
|
{
|
|
|
|
|
path: '/admin',
|
|
|
|
|
name: 'admin-panel',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminPanel.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/bus-stops',
|
|
|
|
|
name: 'admin-bus-stops',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminBusStops.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/routes',
|
|
|
|
|
name: 'admin-routes',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminRoutes.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/reports',
|
|
|
|
|
name: 'admin-reports',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminReports.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/schedules',
|
|
|
|
|
name: 'admin-schedules',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminSchedules.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/drivers',
|
|
|
|
|
name: 'admin-drivers',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminDrivers.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/analytics',
|
|
|
|
|
name: 'admin-analytics',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/StrategicAnalytics.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/taxis',
|
|
|
|
|
name: 'admin-taxis',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminTaxis.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/admin/shuttles',
|
|
|
|
|
name: 'admin-shuttles',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "admin" */ '@/views/AdminShuttles.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: 'admin' }
|
|
|
|
|
},
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
|
|
|
|
|
// ─── Vistas de Roles Especiales (chunk: roles) ───────────────────────
|
2026-02-21 09:53:31 -05:00
|
|
|
{
|
|
|
|
|
path: '/promoter',
|
|
|
|
|
name: 'promoter-dashboard',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "roles" */ '@/views/PromoterDashboard.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: ['PROMOTER', 'ADMIN'] }
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
path: '/driver',
|
|
|
|
|
name: 'driver-dashboard',
|
perf: optimize build — chunk splitting, remove VueDevTools from prod, fix firebase-tools to devDeps
- vite.config.ts: Remove VueDevTools from production build (dev only)
- vite.config.ts: Add manualChunks for firebase, charts, pdf, vue, maps vendors
- vite.config.ts: Increase chunkSizeWarningLimit to 700KB for Google Maps
- package.json: Move firebase-tools from dependencies to devDependencies
- router/index.ts: Add webpackChunkName groups (transport, discover, user, admin, roles)
- Clean up build log files (build_debug.txt, build_error*.txt, etc.)
Build time improvement: chunks now load on demand per user role
2026-02-22 16:19:27 -05:00
|
|
|
component: () => import(/* webpackChunkName: "roles" */ '@/views/DriverDashboard.vue'),
|
2026-02-21 09:53:31 -05:00
|
|
|
meta: { requiresAuth: true, role: ['DRIVER', 'ADMIN'] }
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
router.beforeEach((to, _from, next) => {
|
|
|
|
|
const token = localStorage.getItem('auth_token')
|
|
|
|
|
const role = localStorage.getItem('user_role')?.toUpperCase()
|
|
|
|
|
|
|
|
|
|
if (to.meta.requiresAuth && !token) {
|
|
|
|
|
next('/login')
|
|
|
|
|
} else if (to.meta.role) {
|
|
|
|
|
const allowedRoles = Array.isArray(to.meta.role) ? to.meta.role : [to.meta.role]
|
|
|
|
|
const hasAccess = allowedRoles.some(r => r.toUpperCase() === role)
|
|
|
|
|
|
|
|
|
|
if (!hasAccess) {
|
|
|
|
|
if (role === 'ADMIN') next('/admin')
|
|
|
|
|
else if (role === 'DRIVER') next('/driver')
|
|
|
|
|
else if (role === 'PROMOTER') next('/promoter')
|
|
|
|
|
else next('/map')
|
|
|
|
|
} else {
|
|
|
|
|
next()
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
next()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export default router
|