Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2013, 09:26
wilmer30
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
plugin y Zend_Acl

Hola:

Este Plugin lo que hace es obtener los roles y recursos y luego crea los permisos para almacenarlos en memoria
Código PHP:
class Aclwh extends Zend_Controller_Plugin_Abstract
{
    public function 
preDispatch(Zend_Controller_Request_Abstract $request) {    
        
$acl = new Zend_Acl();
        
$menus = new MenuRepository();
        
$menus $menus->getMenuacl();
        for(
$i $i count($menus); $i++ ){
            
$acl->addResource(new Zend_Acl_Resource($menus[$i]['module']));
        }
        
$roles = new RolesRepository();
        
$roles $roles->getRolesacl();
        for(
$i $i count($roles); $i++ ){
            
$acl->addRole(new Zend_Acl_Role($roles[$i]['name']));
        }
        
$rolresource = new PermisosRepository();
        
$rolresource $rolresource->getRoleresourceacl();
        for(
$i $i count($rolresource); $i++ ){
            
$acl->allow($rolresource[$i]['role_name'], $rolresource[$i]['resource_name']);
            
        }
//         return  $acl->isAllowed('logistic', 'menu') ? 'si' : 'no';
        
return $acl;
    }

Basicamente en el predispatch del controlador obtengo el rol al que pertenece el usuario autenticado, si el usario tiene permiso entonces que imprima si de lo contrario no en este código:
Código PHP:
    public function preDispatch() {
        
$auth Zend_Auth::getInstance();
        
$role = new HistousuarioRepository();
        
$id $auth->getIdentity();
        
$role $role->getRole($id['id']);
        
$module $this->getRequest()->getModuleName();
        
$acl = new ApplicationHelpersAclwh();
         echo 
$acl->isAllowed($role$module) ? 'si' 'no';
        if (! 
$auth->hasIdentity() ) {
            return 
$this->_redirect('/login');
        }
    } 
Pero me muestra este mensaje

Fatal error: Call to undefined method Application\Helpers\Aclwh::isAllowed() in C:\xampp\htdocs\bcbtram\application\modules\menu\c ontrollers\IndexController.php on line 95

y con justa razon, intente que me devolviera true y false, pero tampoco funciona, cómo haría para que me devuelva el resultado? o mejor aún si existe otra forma de realizar los permisos.