Suponiendo que tienes algo como lo siguiente en tu BD:
Tabla users:
id (pk) | name
-------------------
1 | juan
2 | pedro
Tabla files:
id (pk) | name
----------------------------
1 | presentacion.pdf
2 | paper.pdf
Tabla files_users:
file_id (pk,fk) | user_id (pk, fk)
-----------------------------------
1 | 1
1 | 2
2 | 1
En tu vista
---------------------
<table>
<tr>
<td>Presentacion</td>
<td><?=$html->link('/files/descargar', 'download/1')?></td>
</tr>
<tr>
<td>Paper</td>
<td><?=$html->link('/files/descargar', 'download/2')?></td>
</tr>
</table>
En tu controlador
-----------------------
<?php
class FilesController extends AppController
{
function download($id_file)
{
$this->autoRender = false;
// Acá logica que valida usuario y que el archivo pertenece
// Consultas la tabla files_users con el id del archivo y el id del
usuario si lo encuentras buscas el nombre del archivo
// Si pertenece debes retornar $valid = true; y $name_file = con el
nombre del archivo
if ($valid)
{
$path = "archivos/".$name_file;
header ("Content-Disposition: attachment;
filename=".$name_file."\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($path));
readfile($path);
}
}
}
?>
El 19 de mayo de 2010 07:30, Pau <[email protected]> escribió:
> Hola a todos.
> Necesito que un usuario pueda abrir un documento pdf al pulsar un
> botón, pero necesito hacer unas validaciones de seguridad antes. Por
> lo tanto me gustaría llamar a una función del controller y allí
> validar al usuario y ver que el documento que pide realmente le
> pertenece y si es correcto abrir el documento en otra ventana.
> ¿Alguna idea de cómo se puede hacer esto?
> Saludos y gracias.
> Pau.
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]<cakephp-es%[email protected]>
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>
>
--
Saludos!
Fabian
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.