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 
cakephp-es@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a 
cakephp-es+unsubscr...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a