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
Merci de m'expliquer comment effectuer la bonne redirection a partir du module.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ); } } } }
Cereal59
Partager