// middleware/checkPageAccess.ts
// Middleware to check if user has access to the page based on hakAkses

export default defineNuxtRouteMiddleware(async (to, from) => {
    // Skip check for auth pages, error pages
    const publicPaths = ['/auth/login', '/auth/register', '/'];
    if (publicPaths.includes(to.path)) {
        return;
    }
    
    const { user } = useUserInfo();
    
    // If not authenticated, let auth middleware handle it
    if (!user.value) {
        return;
    }
    
    const { getAllowedPages } = useHakAkses();
    
    try {
        const allowedPages = await getAllowedPages();
        
        // Check if user has access to this page
        if (!allowedPages.includes(to.path)) {
            console.warn(`Access denied to ${to.path}. User allowed pages:`, allowedPages);
            
            // Redirect to dashboard or first allowed page
            if (allowedPages.length > 0) {
                const firstPage = allowedPages.includes('/dashboard') ? '/dashboard' : allowedPages[0];
                return navigateTo(firstPage);
            } else {
                // No access to any page - redirect to login with error
                return navigateTo('/auth/login?error=' + encodeURIComponent('You do not have access to any pages. Please contact administrator.'));
            }
        }
    } catch (error) {
        console.error('Error checking page access:', error);
        // Allow access on error to prevent blocking user
        return;
    }
});
