Hola a todos,
Estoy intentando cargar los componentes Acl y Auth desde un modelo pero no
consigo hacerlo. Quisiera poder crear una función que me permita comprobar
los permisos de un usuario para poder mostrar o no unas partes de la vista.
Hasta ahora lo cargaba desde el controlador de la siguiente manera:
$this->set('permiso_editar', $this->Acl->check(array('model' => 'Grupo',
'foreign_key' => $this->Auth->user('grupo_id')), 'Articulos/edit'));
funcionando perfectamente. Ahora quisiera poder cambiar eso por:
$this->set('permiso_editar', $this->Articulo->permiso('Articulos/edit'));
Para ello, he creado la función en el modelo de la siguiente manera, tras
investigar por Google y probar varias opciones:
class Articulo extends AppModel {
var $name = 'Articulo';
var $validate = array ( 'title' => array (
'rule' => 'notEmpty'),
'body' => array (
'rule' => 'notEmpty'));
public $actAs = array('Acl' => 'requester');
public function permiso($accion) {
App::import('Component','Acl');
$acl = new AclComponent();
$acl->startup($controller);
App::import('Component','Auth');
$auth = new AuthComponent();
$auth->startup($controller);
return $this->Acl->check(array('model' => 'Grupo', 'foreign_key' =>
$this->Auth->user('grupo_id')), $accion);
}
}
Cuando actualizo la vista, me aparece el siguiente mensaje de error:
*Notice* (8): Trying to get property of non-object
[*CORE/cake/libs/controller/components/auth.php*, line *311*]
*Notice* (8): Trying to get property of non-object
[*CORE/cake/libs/controller/components/auth.php*, line *312*]
*Notice* (8): Trying to get property of non-object
[*CORE/cake/libs/controller/components/auth.php*, line *318*]
*Warning* (2): array_flip() expects parameter 1 to be array, null given
[*CORE/cake/libs/controller/components/auth.php*, line *318*]
*Notice* (8): Trying to get property of non-object
[*CORE/cake/libs/controller/components/auth.php*, line *319*]
*Notice* (8): Trying to get property of non-object
[*CORE/cake/libs/controller/components/auth.php*, line *321*]
*Notice* (8): Trying to get property of non-object
[*CORE/cake/libs/controller/components/auth.php*, line *333*]
*Notice* (8): Undefined property: AuthComponent::$Session
[*CORE/cake/libs/controller/components/auth.php*, line *723*]
Fatal error: Call to a member function check() on a non-object in
/var/www/xxxxxxx/cake/libs/controller/components/auth.php on line 723
¿Alguna idea o consejo para conseguirlo o mejor lo dejo en el controlador y
listos? Me interesaría poder pasarlo al modelo para, después de testearlo
con calma, pasarlo al app_model y que pudiera usarlo en toda la aplicación.
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para ver este debate en la Web, visita
https://groups.google.com/d/msg/cakephp-es/-/DH8T1vTRnZEJ.
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.