import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', redirect: '/dashboard' }, { path: '/login', name: 'login', component: () => import('@/pages/LoginPage.vue'), meta: { requiresAuth: false }, }, // Super Admin routes { path: '/dashboard', name: 'dashboard', component: () => import('@/pages/DashboardPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/schools', name: 'schools', component: () => import('@/pages/SchoolsPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/schools/:id', name: 'school-detail', component: () => import('@/pages/SchoolDetailPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/licenses', name: 'licenses', component: () => import('@/pages/LicensesPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/sms', name: 'sms', component: () => import('@/pages/SmsPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/billing', name: 'billing', component: () => import('@/pages/BillingPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/tickets', name: 'tickets', component: () => import('@/pages/TicketsPage.vue'), meta: { requiresAuth: true, layout: 'app' }, }, { path: '/tickets/:id', name: 'ticket-detail', component: () => import('@/pages/TicketDetailPage.vue'), meta: { requiresAuth: true, layout: 'app' }, }, { path: '/users', name: 'users', component: () => import('@/pages/UsersPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/announcements', name: 'announcements', component: () => import('@/pages/AnnouncementsPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, { path: '/email-logs', name: 'email-logs', component: () => import('@/pages/EmailLogsPage.vue'), meta: { requiresAuth: true, layout: 'app', role: 'super_admin' }, }, // School Portal routes { path: '/portal', name: 'portal', component: () => import('@/pages/portal/PortalOverviewPage.vue'), meta: { requiresAuth: true, layout: 'portal' }, }, { path: '/portal/billing', name: 'portal-billing', component: () => import('@/pages/portal/PortalBillingPage.vue'), meta: { requiresAuth: true, layout: 'portal' }, }, { path: '/portal/sms', name: 'portal-sms', component: () => import('@/pages/portal/PortalSmsPage.vue'), meta: { requiresAuth: true, layout: 'portal' }, }, { path: '/portal/tickets', name: 'portal-tickets', component: () => import('@/pages/portal/PortalTicketsPage.vue'), meta: { requiresAuth: true, layout: 'portal' }, }, { path: '/portal/profile', name: 'portal-profile', component: () => import('@/pages/portal/PortalProfilePage.vue'), meta: { requiresAuth: true, layout: 'portal' }, }, { path: '/:pathMatch(.*)*', name: 'not-found', component: () => import('@/pages/NotFoundPage.vue'), }, ], }) router.beforeEach((to, _from, next) => { const token = localStorage.getItem('hub_token') const role = localStorage.getItem('hub_role') const requiresAuth = to.meta.requiresAuth !== false if (requiresAuth && !token) return next('/login') if (to.name === 'login' && token) { return next(role === 'super_admin' ? '/dashboard' : '/portal') } next() }) export default router