Bonjour,

Je viens d'implémenter une authentification au sein de mon application, et ça semble bien marcher.

le problème c'est que je dois faire un test avant l'appel de n'importe quel action,
mais c'est un petit peu couteux.

En googlant un peu, j'ai trouvé que l'utilisation des plugins résoudra le problème, mais je n'arrive pas à l'implémenter.

Voici le code du plugin :
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
<?php
	class Application_Model_Plugins_AuthPlugin extends Zend_Controller_Plugin_Abstract
	{
	    public function preDispatch(Zend_Controller_Request_Abstract $request)
	    {
			$acl = new Application_Model_Authentication_Acl();
			$identity = Zend_Auth::getInstance()->getIdentity();
			$controllerName = $this->getRequest()->getControllerName();
			$actionName = $this->getRequest()->getActionName();
 
			if(Zend_Auth::getInstance()->hasIdentity()) {
				if ($acl->isAllowed($identity->role, $controllerName, $actionName)){
					if ($identity->role == "user")
						$this->_helper->redirector->gotoSimple('user', 'error', null, array('code'=>"V"));
					elseif  ($identity->role == "admin")
						$this->_helper->redirector->gotoSimple('user', 'error', null, array('code'=>"V"));
				}
			}else{
				if ($controllerName == "admin")
					$this->_helper->redirector->gotoSimple('admin', 'connection', null, array());
				else
					$this->_helper->redirector->gotoSimple('user', 'login', null, array());
			}
	    }
	}
et voici le code du fichier Bootstrap :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	public function __construct($application) {
		$front = Zend_Controller_Front::getInstance();
		$front->setControllerDirectory(APPLICATION_PATH . '/controllers')
		      ->setRouter(new Zend_Controller_Router_Rewrite())
		      ->setDispatcher(new Zend_Controller_Dispatcher_Standard())
		      ->registerPlugin(new Application_Model_Plugins_AuthPlugin ());
		$front->dispatch();
    }
}
j'ai l'erreur suivante :
Fatal error: Class 'Application_Model_Plugins_AuthPlugin ' not found in C:\wamp\www\zf-tutorial\application\Bootstrap.php on line 12

Merci d'avance pour votre aide
Bien cordialement