Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2011, 08:34
pur
 
Fecha de Ingreso: agosto-2007
Mensajes: 98
Antigüedad: 17 años, 3 meses
Puntos: 4
Problema redireccion en plugin

Buenas amigos, el plugin funciona bien el problema es que no redirecciona, les explico:
Basicamente el plugin lo que hace es no permitir el acceso a usuarios que no tengan el usuario y rol correspondiente y, efectivamente, eso funciona perfecto, no permite el acceso a ninguna pagina que no corresponda.
El problema es que yo quiero que redireccione; o sea si coloco:
www.misitio.com/index/actionrestringido

no permite el acceso si no tengo permisos, me muestra el action nopermitido, pero no me cambia la url, en la direcc. se sigue viendo:
www.misitio.com/index/actionrestringido

cuando yo quiero que se vea:
www.misitio.com/index/nopermitido

Estoy usando el setRequestUri del Request, pero no funciona.

Aqui les dejo el plugin:
Código PHP:
Ver original
  1. class Mis_Plugins_Auth extends Zend_Controller_Plugin_Abstract
  2. {  
  3.     protected $_auth;
  4.     protected $_acl;
  5.  
  6.     const NO_AUTH_MODULE        = 'default';
  7.     const NO_AUTH_CONTROLLER  = 'index';
  8.     const NO_AUTH_ACTION         = 'nopermitido';
  9.  
  10.     const NO_ACL_MODULE          = 'default';
  11.     const NO_ACL_CONTROLLER    = 'index';
  12.     const NO_ACL_ACTION           = 'nopermitido';
  13.  
  14.     public function __construct()
  15.     {
  16.         $this->_auth = Zend_Auth::getInstance();
  17.         $this->_acl =  new Mis_Acl($this->_auth); //Zend_Registry::get( 'Zend_Acl' );
  18.     }
  19.  
  20.     public function preDispatch(Zend_Controller_Request_Abstract $request)
  21.     {
  22.         if ($this->_auth->hasIdentity()) {
  23.             $role = $this->_auth->getIdentity()->role;//$role = $this->_auth->getIdentity()->role;
  24.         } else {
  25.             $role = 'invitado';
  26.         }
  27.  
  28.         $controller = $request->controller;
  29.         $action = $request->action;
  30.         $module = $request->module;
  31.         //$resource = $controller;
  32.         $resource="$module:$controller";
  33.  
  34.         if (!$this->_acl->has($resource)) {
  35.             $resource = null;
  36.         }
  37.  
  38.         if (!$this->_acl->isAllowed($role, $resource, $action)) {
  39.             if (!$this->_auth->hasIdentity()) {
  40.                 $module = self::NO_AUTH_MODULE;
  41.                 $controller = self::NO_AUTH_CONTROLLER;
  42.                 $action = self::NO_AUTH_ACTION;
  43.  
  44.                
  45.             } else {
  46.                 $module = self::NO_ACL_MODULE;
  47.                 $controller = self::NO_ACL_CONTROLLER;
  48.                 $action = self::NO_ACL_ACTION;
  49.             }
  50.            
  51.         }
  52.  
  53.        
  54.  
  55.         $request->setRequestUri('/index/nopermitido');
  56.         $request->setModuleName($module);
  57.         $request->setControllerName($controller);
  58.         $request->setActionName($action);
  59.         //$request->setPathInfo('/index/nopermitido');
  60.  
  61.      
  62.     }
  63. }
Saludos.