Bonjours a tous,
Me penchant actuellement sur Zend_Acl je suis actuellement un peut bloquez ! Voila l'histoire :
Avec Zend_Auth j'ai fait mon formulaire d'identification -> OK
J'ai creer dans ma BDD les users avec les roles -> OK
Fait un plugin pour vérifier a chaque action si il a le droit -> OK
En suivant different tuto et le guide de Zend framework j'ai mis dans mon bootstrap ma config pour les Acl. J'ai définie mes rôle, mes ressources, et mes autorisations.
Voila ce que je souhaite faire: que le visiteur puisse voir la page index du site, la page index de mon blog la page index de mon cv, et la page index de photo et qq actions lier au controller photo aussi et restreindre les autres action.
Exemple:
Mon BlogController -> indexAction -> index.phtml
-> ajouterAction -> ajouter.phtml
-> addAction -> add.phtml
Mon visiteur peut voir index.phtml mais ne peut pas accéder au action ajouter et add sans être identifier.
Le souci c'est que j'ai beau faire de allow ou des deny il ne sont pas pris en compte et du coup me demande de m'identifier pour accéder a l'index du blog.
Je mais si dessous mes différents
codes :Bootstrap
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 <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initAutoload() { $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH)); return $moduleLoader; } protected function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headTitle()->setSeparator(' - '); $view->headTitle(' Tutoriel Zend Framework'); } protected function _initZendAcl() { $ZendAcl = new Zend_Acl(); $ZendAcl->add(new Zend_Acl_Resource('index')); $ZendAcl->add(new Zend_Acl_Resource('blog')); $ZendAcl->add(new Zend_Acl_Resource('cv')); $ZendAcl->add(new Zend_Acl_Resource('auth')); $ZendAcl->add(new Zend_Acl_Resource('photo')); $ZendAcl->addRole(new Zend_Acl_Role('guest')); $ZendAcl->addRole(new Zend_Acl_Role('member')); $ZendAcl->addRole(new Zend_Acl_Role('admin')); $ZendAcl->allow('guest', 'blog','index'); $ZendAcl->allow('guest', 'index'); $ZendAcl->allow('member'); $ZendAcl->allow('admin'); echo $ZendAcl->isAllowed('guest', 'blog', 'index') ? 'allowed' : 'denied'; //allowed return $ZendAcl; } }
code : Plugin d'authentification
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 <?php class Plugin_Authentication extends Zend_Controller_Plugin_Abstract { public function routeShutdown(Zend_Controller_Request_Abstract $request) { $auth = Zend_Auth::getInstance(); $acl = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('ZendAcl'); //($auth->hasIdentity() AND !$acl->isAllowed($auth->getIdentity()->roles, $request->getControllerName())) OR !$acl->isAllowed('guest', $request->getControllerName() if(((!$auth->hasIdentity() OR !$acl->isAllowed($auth->getIdentity()->role, $request->getControllerName())) AND !$acl->isAllowed('guest', $request->getControllerName()))) { /*Zend_Debug::dump($auth->getIdentity()->roles); Zend_Debug::dump($request->getControllerName()); Zend_Debug::dump($acl->isAllowed($auth->getIdentity()->roles, $request->getControllerName())); die();*/ $request->setControllerName('auth')->setActionName('login'); // } } }
code : BlogController
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 <?php class BlogController extends Zend_Controller_Action { public function init() { if(Zend_Auth::getInstance()->getIdentity()) { $this->view->membres = Zend_Auth::getInstance()->getIdentity()->last_name; } else $this->view->membres = 'Invite'; } public function indexAction() { $article = new Model_DbTable_Blog(); $this->view->article = $article->fetchAll(null, "id DESC"); } public function ajouterAction() { $this->view->blog = $this->_getBlogForm(); } public function addAction() { $Form_Blog = $this->_getBlogForm(); if($Form_Blog->isValid($_POST)) { $Model_DbTable_Blog = new Model_DbTable_Blog(); $dataas = $Form_Blog->getValues(); $Model_DbTable_Blog->insert($dataas); } else { $this->view->blog = $Form_Blog; $this->render('index'); } } private function _getBlogForm() { $Form_Blog = new Form_Blog; return $Form_Blog->setAction($this->_helper->url('add')); } }
Dite moi si il manque des infos pour comprendre la situation et merci d'avance pour l'aide
Partager