Expertos en Symfony y Drupal

Descarga segura de ficheros en Drupal con el hook_file_download

Buenas drupaleros,

en la píldora drupaliana de hoy os voy a poner un ejemplo muy sencillo de cómo restringir el acceso a ficheros privados y asegurarnos de que son sólo accesible por quien nosotros queramos.

Lo primero será cambiar el método predeterminado de descarga haciendo que la ruta sea por ejemplo "sites/default/files/private". Ya sabéis que esto se hace en Administración->Configuración->Sistema de archivos.

Lo siguiente será utilizar nuestro hook_file_download


/**
* Implementation of hook_file_download().
*/
function vabadus_file_download($uri) {
    global $user;    
//consulta a bbdd para obtener el id
    $result = db_query('SELECT id
                        FROM `file_managed` m, file_usage u
                        WHERE m.fid = u.fid
                        AND u.`type` = :type
                        AND uri = :uri', array(':type' => "node", ':uri' => $uri))
                        ->fetchField();

    //hacemos las comprobaciones con el $user->uid o con el uid del usuario que queramos y retornamos 1 si es accesible 
   if($node->field_cliente['und'][0]['uid'] == $user->uid){
        return 1;
    }
   else{
        return -1;
   }
}

Con esto nos aseguramos que los ficheros son descargados de una forma privada y además por el usuario que queramos

Drupal y rock and roll

[x] Este sitio utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando estás aceptando su uso. Política de cookies.