import { useProfileSession, usePermissions, useApi } from "#imports"; export default defineNuxtRouteMiddleware(async (to) => { const { ensureSession, activeProfile } = useProfileSession(); await ensureSession(); const rawPath = to?.path ?? ""; const normalizedPath = rawPath.startsWith("/") ? rawPath : `/${rawPath}`; const fullPath = to?.fullPath ?? normalizedPath; const routeName = typeof to?.name === "string" ? to.name : ""; const isProfilesRoute = normalizedPath.startsWith("/profiles") || fullPath.startsWith("/profiles") || routeName.startsWith("profiles"); const isMaintenanceRoute = normalizedPath === "/maintenance"; // Redirect to login if no active profile if (!activeProfile.value && !isProfilesRoute && !isMaintenanceRoute) { return navigateTo("/profiles"); } // Permission checks if (activeProfile.value) { const { isAdmin } = usePermissions(); // Admin-only routes if (normalizedPath.startsWith("/admin")) { if (!isAdmin.value) { return navigateTo("/"); } } // Maintenance mode check for non-admin users if (!isAdmin.value && !isMaintenanceRoute && !isProfilesRoute) { const { apiCall } = useApi(); const res = await apiCall<{ enabled: boolean }>('/maintenance/check'); if (res.success && res.data?.enabled) { return navigateTo("/maintenance"); } } } });