Saltar a contenido

Archivos Protegidos

PiecesPHP incluye un sistema para restringir el acceso a archivos estáticos (como subidas de usuarios) mediante middleware, permitiendo validar sesiones o tokens antes de servir el contenido.


🔒 Funcionamiento

El sistema intercepta las peticiones a directorios específicos y ejecuta un callback de validación. Si el callback retorna true, el archivo se sirve; de lo contrario, se deniega el acceso.

Ejemplo de Configuración

Típicamente se configura en src/app/config/final-configurations-includes/protected-files.php:

use PiecesPHP\Core\Helpers\Directories\ProtectFileMiddleware;
use PiecesPHP\Core\Routing\RequestRoute as Request;

$uploadsDir = get_config('upload_dir');

// Proteger el directorio de publicaciones
ProtectFileMiddleware::protect(
    append_to_path_system($uploadsDir, 'publications'), 
    function (Request $request, string $filePath) {

        // Ejemplo: Solo usuarios logueados pueden ver estos archivos
        // return SessionToken::isActiveSession(SessionToken::getJWTReceived());

        return true; 
    }
);

🛠️ Detalles Técnicos

  • Clase principal: PiecesPHP\Core\Helpers\Directories\ProtectFileMiddleware.
  • Rutas: El sistema resuelve automáticamente si la ruta solicitada coincide con un directorio protegido.
  • Flexibilidad: Puedes aplicar lógicas complejas dentro del callback, como verificar roles, propiedad del archivo o validez de firmas temporales.