export default defineNuxtRouteMiddleware(async (to) => { const auth = useAuthStore() const isLogin = to.path === '/login' if (!auth.checked) { await auth.ensureSession() } if (!isLogin && !auth.isAuthenticated) { return navigateTo('/login') } if (isLogin && auth.isAuthenticated) { return navigateTo('/') } if (auth.isAuthenticated) { const { loaded: sidebarLoaded, loadSidebar } = useSidebar() const { loaded: modulesLoaded, loadModules } = useModules() // Chargement parallele sidebar + modules actifs : les deux sont // consommes par layouts/default.vue (sidebar pour la nav, modules // pour conditionner le SiteSelector). Charger en parallele evite // le flash au premier paint de la barre. await Promise.all([ sidebarLoaded.value ? Promise.resolve() : loadSidebar(), modulesLoaded.value ? Promise.resolve() : loadModules(), ]) } })