Redirection dans un plugin
Bonjour,
Je débute avec le zend framework, et je rencontre un probleme avec l'utilisation des plugins.
Pour detailler:
Je developpe pour mon site un systeme de gestion des ACL (ce systeme fonctionne correctement)
pour effectuer le controle je developpe un plugin, le controle s'effectue correctement, mais au moment de faire la redirection vers la page de login (quand pas les droits par exemple), le script boucle et appel la requete initiale.
Je vous donne le code de mon plugin
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
class Auth_AuthPlugin extends Zend_Controller_Plugin_Abstract
{
private $_acl;
private $_auth;
private $_noauth = array('module' => 'default',
'controller' => 'login',
'action' => 'index');
private $_noacl = array('module' => 'default',
'controller' => 'error',
'action' => 'privileges');
public function __construct($acl,$auth)
{
$this->_acl = $acl;
$this->_auth = $auth;
}
public function preDispatch($request)
{
if($this->_auth->hasIdentity())
{
$identity = $this->_auth->getIdentity();
$role = $identity["role"];
}
else
{
$role = 'guest';
}
$controller = $request->controller;
$module = $request->module;
$action = $request->action;
$resource = $controller;
if(!$this->_acl->has($resource))
{
$resource = null;
}
if (!$this->_acl->isAllowed($role, $resource, $action)) {
if (!$this->_auth->hasIdentity()) {
$module = $this->_noauth['module'];
$controller = $this->_noauth['controller'];
$action = $this->_noauth['action'];
echo "pas d'identite</br>";
}
else
{
$module = $this->_noacl['module'];
$controller = $this->_noacl['controller'];
$action = $this->_noacl['action'];
echo $controller."</br>";
echo $module."</br>";
echo $action."</br>";
echo "pas d'acl</br>";
$request->setModuleName($module);
$request->setControllerName($controller);
$request->setActionName($action);
$request->setDispatched( false );
}
}
}
} |
Merci de m'expliquer comment effectuer la bonne redirection a partir du module.
Cereal59