24 / 06 / 2013
Veremos cómo restringir el acceso a determinados usuarios que cumplan determinadas características de forma personalizada.
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