import { createRouter, createWebHistory } from 'vue-router' import App from './App.vue' import { getCurrentUser } from './services/auth' import type { UserRole } from './types/auth' let role:UserRole|undefined const router=createRouter({history:createWebHistory(),routes:[ {path:'/',component:App}, {path:'/login',component:()=>import('./views/LoginView.vue'),meta:{public:true}}, {path:'/register',component:()=>import('./views/RegisterView.vue'),meta:{public:true}}, {path:'/403',component:()=>import('./views/ForbiddenView.vue'),meta:{public:true}}, {path:'/history',component:()=>import('./views/HistoryView.vue')}, {path:'/profile',component:()=>import('./views/ProfileView.vue')}, {path:'/settings',component:()=>import('./views/AccountSettingsView.vue')}, {path:'/indexes',component:()=>import('./views/IndexManagementView.vue'),meta:{role:'admin'}}, {path:'/reviews',component:()=>import('./views/KnowledgeReviewView.vue'),meta:{role:'admin'}}, {path:'/knowledge',component:()=>import('./views/KnowledgeManagementView.vue'),meta:{role:'admin'}}, {path:'/documents',component:()=>import('./views/DocumentManagementView.vue'),meta:{role:'admin'}}, {path:'/sources',component:()=>import('./views/SourceManagementView.vue'),meta:{role:'admin'}}, {path:'/retrieval-exports',component:()=>import('./views/RetrievalExportView.vue'),meta:{role:'admin'}}, {path:'/admin',component:()=>import('./views/AdminView.vue'),meta:{role:'admin'}}, {path:'/:pathMatch(.*)*',component:()=>import('./views/NotFoundView.vue'),meta:{public:true}}, ]}) router.beforeEach(async to=>{if(to.meta.public)return true;try{role=(await getCurrentUser()).role}catch{return {path:'/login',query:{redirect:to.fullPath}}}if(to.meta.role&&role!==to.meta.role)return {path:'/403'};return true}) export default router