Tip: Saber si un elemento pertenece a un usuario en cakephp
Para entender en que radica este tip vamos a poner un ejemplo.
Supongamos que estamos escribiendo un blog, en él diversos usuarios pueden escribir posts y editarlos ahora cuando un usuario va a editar un post previamente escrito además de que el sistema tenga que verificar si el usuario puede acceder a los posts debemos de verificar que el susodicho post pertenece al usuario en cuestión.
Es muy sencillo el saber si el post le pertenece al usuario, esto haciendo una query y ver que el identificador del usuario aparecezca en el user_id de la tabla posts.
Pero que pasa cuando tenemos además de posts, tenemos otros tantos módulos como photos, videos,comments, profiles y muchas cosas mas, el escribir esa query para verificar que cada elemento le pertenece al usuario termina siendo tedioso, es por eso que escribí esta pequeña función:
if($this->find(
array(
"{$this->name}.id" => $id,
"{$this->name}.user_id"=> $user_id
),
array(
"{$this->name}.id",
"{$this->name}.user_id"
),
null,
0
)
){
return True;
}
return False;
}
Esta función debe de ser colocada en nuestro app_model dentro de nuestra carpeta /app (si no existe app_mode.php podemos copiarlo de el que esta en /cake/libs/model/app_model.php y ponerlo dentro de nuestra carpeta /app)
Una vez hecho esto, ya solo para verificar la pertenencia del elemento al usuario tenemos que hacer:
Y devolverá true o false dependiendo de si pertenece el elemento o no.
NOTA: esta función sirve si y solo si seguimos las convenciones de cake, es decir que siempre tenemos una columna id y si va a estar relacionada esa columna con la tabla usuarios debe de existir el campo user_id

