Bonjour à tous,
j'avance pas à pas sur le Zend framework et me voilà bloqué sur la mise en place des ACL (j'ai pioché de l'information à droite à gauche mais à chaque fois je déchante).
Mon problème réside dans la mise en place des éléments fournis par Janitrix au sein de ma propre structure (voici le post que j'essaye de réaliser Tuto)
Pour la classe fournie (Inuitech_Janitrix_Acl), ça me parait claire
A ce que j'ai compris, le nom de la classe définit également son emplacement, dans mon appli la classe se nomme : Lib_Application_Resource_Acl et se trouve donc dans : library/Lib/Application/Resource/Acl.php
Ensuite j'ai juste adapté le code (role et ressource) à mon application.
Par contre, mon problème c'est pour le plugin, il est dit de le placer dans le bootstrap, mais pour moi cette notion est confuse, ce n'est pas clair.
Première question :
Dans mon appli il existe un fichier bootstrap.php qui se trouve dans le dossier application, il contient les lignes suivantes :
Est-ce cela dont on parle ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { }
Dans ce cas dois-je mettre le code du plugin dessous ? Du genre :
Deuxième question :
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 <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { // vide } /** * Plugin qui vérifie les droits d'accès de la session en cours * à la page demandée. * * @copyright 2008 Gabriel Malkas * @license "New" BSD License */ class Inuitech_Acl_Plugin extends Zend_Controller_Plugin_Abstract { private $_auth = null; private $_acl = null; public function __construct($auth, $acl) { $this->_auth = $auth; $this->_acl = $acl; } public function preDispatch(Zend_Controller_Request_Abstract $request) { $role = 'visiteur'; if ($this->_auth->hasIdentity()) { $role = $this->_auth->getIdentity()->role; } $controller = $request->controller; $action = $request->action; $module = $request->module; $resource = $this->_acl->has($controller) ? $controller : null; if (!$this->_acl->isAllowed($role, $resource, $action)) { $request->setControllerName('Error'); $request->setActionName('deny'); } } }
Ensuite il dit, j'ajoute le plugin au front controller, du coup qu'appelle t'il le front-controller, public/index.php sinon quel fichier est-ce ?
Troisième question :
Comment ajoute-t-on le plugin au front controller ?
J'ai lu ça :
Est-ce suffisant ? Dois-je placer le code ci-dessus sous le code suivant, ou cela n'a pas d'importance :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $front = Zend_Controller_Front::getInstance(); $front->registerPlugin(new Inuitech_Acl_Plugin()); $front->dispatch();
Voilà, les points sur lesquels je bute, il est vrai que toutes ces notions sont décrites dans plusieurs tuto sur le web, mais il y a toujours une zone d'ombre qui m'empêche d'aller au bout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $application->boostrap()->run();
Je vous remercie d'avance pour vos réponses.
Partager