Volviendo al tema principal, todavia no pude resolverlo, no se como plantearlo:
Yo tengo la funcion isAuthorized (la del book de cake) q es sencilla y a su vez una funcion isOwnedBy() en el modelo Post q se encarga de verificar si el post pertece al usuario q esta logueado y le permite editar/eliminar:
Código PHP:
public function isAuthorized($user) {
// All registered users can add posts
if ($this->action === 'add') {
return true;
}
// The owner of a post can edit and delete it
if (in_array($this->action, array('edit', 'delete'))) {
$postId = $this->request->params['pass'][0];
if ($this->Post->isOwnedBy($postId, $user['id'])) {
return true;
}
}
return parent::isAuthorized($user);
}
...esa es la del book de cake, funciona todo bien.
Lo q yo quiero hacer es extender esa funcion isAuthorized() y hacer lo q dije al principio, el super admin hace todo, el admin hace todo pero no toca al super admin y el user comun solo edita/elimina su post...
Empece haciendo esto pero me trabo en la parte del Admin, lo demas anda bien, no se como hacer para q admin edite/elimine posts excepto los de super admin:
Código PHP:
public function isAuthorized($user) {
Controller::loadModel('User');
//Autorizar a cualquier tipo de usuario a agregar posts
if($this->action === 'add'){
return true;
}
//Solo el dueño del post puede editar y eliminar su post
//Tambien tienen permisos el super admin y el admin
if (in_array($this->action, array('edit', 'delete'))) {
//si rango es 1 (super admin) edita y/o elimina cualquier post de cualquier usuario
if ($userRolePost == 1) {
return true;
//si el rango es 2 (admin) edita y/o elimina cualquier post EXCEPTO los de Super Admin
}elseif($ACA ME TRABO!!!!){
return true;
//Usuario comun solo edita y/o elimina su propio post
}elseif($this->Post->isOwnedBy($postId, $user['id'])){
return true;
}else{
return false;
}
}
parent::isAuthorized($user);
}
...ya se como obtener los datos del post, el id del user y todo eso (donde me habia trabado tambien) pero no se como seguir.
No se si hacer una funcion en el modelo User q compare el id del user q creo el post con el id del user que se se logueo, y despues comparar los roles...
Se me hizo una ensalada...