import { NextRequest, NextResponse } from 'next/server';
import { decrypt } from '@/lib/auth';

export async function middleware(request: NextRequest) {
    const session = request.cookies.get('session')?.value;
    const isLoginPage = request.nextUrl.pathname === '/login';

    if (!session && !isLoginPage) {
        return NextResponse.redirect(new URL('/login', request.url));
    }

    if (session && isLoginPage) {
        return NextResponse.redirect(new URL('/', request.url));
    }

    // Si hay sesión y queremos verificar permisos granulares:
    if (session) {
        try {
            const payload = await decrypt(session);
            // Aquí podríamos añadir lógica de redirección basada en payload.user.tipo_acceso
            // o permisos de módulos, pero por ahora solo protegemos el acceso básico.
        } catch (err) {
            return NextResponse.redirect(new URL('/login', request.url));
        }
    }

    return NextResponse.next();
}

export const config = {
    matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
};
