import type { RouteRecordRaw } from 'vue-router/auto' const emailRouteComponent = () => import('@/pages/apps/email/index.vue') // 👉 Redirects export const redirects: RouteRecordRaw[] = [ // â„šī¸ We are redirecting to different pages based on role. // NOTE: Role is just for UI purposes. ACL is based on abilities. { path: '/', name: 'index', redirect: to => { const userData = useCookie | null | undefined>('userData') const accessToken = useCookie('accessToken') const isLoggedIn = !!(userData.value && accessToken.value) if (!isLoggedIn) return { name: 'login', query: to.query } // Laravel API + Spatie: `roles` is string[] (e.g. super_admin, org_admin) const roles = Array.isArray(userData.value?.roles) ? (userData.value!.roles as string[]) : [] const legacyRole = userData.value?.role as string | undefined if (legacyRole === 'admin') return { name: 'dashboards-crm' } if (legacyRole === 'client') return { name: 'access-control' } const isOrgUser = roles.some(r => ['super_admin', 'org_admin', 'org_member', 'org_readonly'].includes(r), ) if (isOrgUser) return { name: 'events' } // Authenticated but unexpected role payload — avoid redirect loop back to login return { name: 'events' } }, }, { path: '/pages/user-profile', name: 'pages-user-profile', redirect: () => ({ name: 'pages-user-profile-tab', params: { tab: 'profile' } }), }, { path: '/pages/account-settings', name: 'pages-account-settings', redirect: () => ({ name: 'pages-account-settings-tab', params: { tab: 'account' } }), }, ] export const routes: RouteRecordRaw[] = [ // Email filter { path: '/apps/email/filter/:filter', name: 'apps-email-filter', component: emailRouteComponent, meta: { navActiveLink: 'apps-email', layoutWrapperClasses: 'layout-content-height-fixed', }, }, // Email label { path: '/apps/email/label/:label', name: 'apps-email-label', component: emailRouteComponent, meta: { // contentClass: 'email-application', navActiveLink: 'apps-email', layoutWrapperClasses: 'layout-content-height-fixed', }, }, { path: '/dashboards/logistics', name: 'dashboards-logistics', component: () => import('@/pages/apps/logistics/dashboard.vue'), }, { path: '/dashboards/academy', name: 'dashboards-academy', component: () => import('@/pages/apps/academy/dashboard.vue'), }, { path: '/apps/ecommerce/dashboard', name: 'apps-ecommerce-dashboard', component: () => import('@/pages/dashboards/ecommerce.vue'), }, ]