package config import "github.com/gofiber/fiber/v2" // UploadsGuard decide si una petición puede leer archivos de /uploads. // Se inyecta desde main.go porque el paquete config no puede importar pkg/auth // (sería una dependencia circular vía app). Se consulta en cada petición, no al // registrar la ruta, así que puede definirse después de cargar la configuración. // // Mientras esté en nil, /uploads queda cerrado: es preferible que un archivo no // cargue a que quede expuesto sin autenticación. var UploadsGuard func(*fiber.Ctx) bool // uploadsProtegidos bloquea el acceso anónimo a los archivos subidos. // Antes /uploads se servía como estático público: sabiendo (o adivinando) la // ruta se podía descargar el RUT de un cliente, una factura o un entregable sin // iniciar sesión. Los clientes del portal siguen usando los endpoints de // descarga dedicados, que además validan que el archivo les pertenezca. func uploadsProtegidos(c *fiber.Ctx) error { if UploadsGuard != nil && UploadsGuard(c) { return c.Next() } // 404 en vez de 401 para no confirmar si el archivo existe. return c.Status(fiber.StatusNotFound).SendString("Not found") }