Tema: Zend_Acl
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/05/2010, 13:36
wigglyUtrera
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 3 meses
Puntos: 3
Zend_Acl

Hola, estoy utilizando el modulo Zend_Acl y me funciona "casi" todo bien.

Si quiero acceder a un controlador de esta forma:

Código HTML:
http:// ... /modulo/controlador
Si a ese controlador no puedo acceder, me redirige al controlador de Error, hasta aqui todo correcto.

El problema viene cuando pongo:

Código HTML:
http:// ... /modulo/controlador/action
NOTA: Con http://.../modulo/controlador/index funciona correctamente

Por ejemplo:

http:// ... /admin/trabajo/crear

me sale lo siguiente:

Código PHP:
Fatal errorUncaught exception 'Zend_Controller_Action_Exception' with message
 
'Action "crear" does not exist and was not trapped in __call()' in /Applications
/MAMP/htdocs/OperaSVN/library/Zend/Controller/Action.php:485 Stack trace#0
 
/Applications/MAMP/htdocs/OperaSVN/library/Zend/Controller/Action.php(515): 
Zend_Controller_Action->__call('crearAction', Array) #1 /Applications/MAMP/htdocs
/OperaSVN/library/Zend/Controller/Dispatcher/Standard.php(289): 
Zend_Controller_Action->dispatch('crearAction'#2 /Applications/MAMP/htdocs
/OperaSVN/library/Zend/Controller/Front.php(946): 
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #3 /Applications/MAMP/htdocs
/OperaSVN/library/Bootstrap.php(159): Zend_Controller_Front->dispatch() #4 
/Applications/MAMP/htdocs/OperaSVN/library/Bootstrap.php(42): 
Bootstrap::_initFrontController() #5 /Applications/MAMP/htdocs/OperaSVN/public
/index.php(17): Bootstrap::main() #6 {main} thrown in /Applications/MAMP/htdocs
/OperaSVN/library/Zend/Controller/Action.php  on line 485 
y el action 'crear' existe y tiene su vista asociada. Es mas cuando entro a esa direccion con un ROL que sí tiene permisos para acceder, funciona correctamente.

El permisos que tengo son:

Código PHP:
$this->addRole(new Zend_Acl_Role('anonimo') );
        
$this->addRole(new Zend_Acl_Role('usuarioTematica'), 'anonimo' );
        
$this->addRole(new Zend_Acl_Role('usuarioGrupo'), 'anonimo' );
        
$this->addRole(new Zend_Acl_Role('admin'));
 
        
// Recursos de lo general a lo particular
        
$this->add(new Zend_Acl_Resource('default'));
        
$this->add(new Zend_Acl_Resource('grupo'));
        
$this->add(new Zend_Acl_Resource('tematica'));
        
$this->add(new Zend_Acl_Resource('admin'));
        
$this->add(new Zend_Acl_Resource('crear'));
        
$this->add(new Zend_Acl_Resource('usuario'));
 
        
// Asignar permisos
        // guest
        
$this->allow('anonimo', array('default') );
        
$this->deny('anonimo', array('grupo''tematica''admin''usuario') );
        
// user
        
$this->allow('usuarioTematica', array('usuario''tematica') );
        
$this->deny('usuarioTematica', array('admin''admin'));
        
        
$this->allow('usuarioGrupo', array('usuario''grupo') );
        
$this->deny('usuarioGrupo', array('admin','crear')); 
El Resource 'crear' lo he puesto para probar denegando acceso a ese action en particular en forma de prueba. En principio tendría que ser indicandolo con el resource 'admin'

Gracias

Un saludo