Bonjour,
je rouvre un nouveau sujet, à cause d'un nouveau problème.

j'utilise un plugin pour le contrôle des droits d'accès, mais je me retrouve avec cette erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Fatal error: Class 'Default_Controller_Plugin_Acl' not found in /var/www/trinis.fourmi-tek.org/application/Bootstrap.php on line 37
mon architecture est construit de cette façon, peut être es-ce une erreur ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
--Application
     -Controllers
       -Authcontroller.php
     -Acls
        -MyAcl.php
     -Plugins
         -Acl.php
....
Le code de mon 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
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
<?php
class Default_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
	//tableau associatif reprenant les infos utilisées pour le lien
	//si l'utilisateur n'est pas authentifié
	private $_noauth = array(
		'module' => 'default',
		'controller' => 'login',
		'action' => 'index'
	);
 
	//tableau associatif reprenant les infos utilisées pour le lien
	//si l'utilisateur est authentifié mais qu'il n'a pas les droits d'accès
	private $_noacl = array(
		'module' => 'default',
		'controller' => 'error',
		'action' => 'deny'
	);
 
	//la méthode événementielle preDispatch(), définie par ZF, est exécutée
	//avant qu'une action ne soit distribuée
	public function preDispatch(Zend_Controller_Request_Abstract $request)
	{
		$acl = null;
		$role = null;
 
		//vérification de l'enregistrement de l'ACL (cf. application/acls/MyAcl.php)
		if(Zend_Registry::isRegistered('My_Acl'))
		{
			//récupération de l'ACL
			$acl = Zend_Registry::get('My_Acl');
		}
		else
		{
			throw new Zend_Controller_Exception("Acl not defined !");
		}
 
		//récupération de l'instance d'identification
		//la classe Zend_Auth permet de définir les adaptateurs d'authentification
		//un adpatateur permet de définir le service d'authentification,
		//dans notre cas, une base de données
		$auth = Zend_Auth::getInstance();
 
		//permet de vérifier si une identité est correctement identifiée
		if($auth->hasIdentity())
		{
			//récupération du role (via la database)
			$role = $auth->getIdentity()->role;
		}
		else
		{
			//si l'utilisateur n'est pas authentifié
			//on définit le rôle par défaut, guest
			$role = 'guest';
		}
 
		//récupération du module, contrôleur et action demandés par la requête
		//comme nous avons utilisé les contrôleurs comme ressource,
		//nous stockons le contrôleur demandé dans la requête dans la variable $ressource
		$module = $request->getModuleName();
		$controller = $ressource = $request->getControllerName();
		$action = $request->getActionName();
 
		//vérification que le contrôleur est définit dans l'ACL
		if(!$acl->has($controller))
		{
			$ressource = null;
		}
 
		//si l'accès n'est pas permis, nous allons modifier la requête
		//en modifiant le module, le contrôleur et l'action
		if(!$acl->isAllowed($role, $ressource, $action))
		{
			//si pas authentifié
			if(!$auth->hasIdentity())
			{
				//$request->setParam('redirect', $module . '/' . $controller . '/' . $action);
				$module = $this->_noauth['module'];
				$controller = $this->_noauth['controller'];
				$action = $this->_noauth['action'];
			}
			else
			{
				//si pas autorisé
				$module = $this->_noacl['module'];
				$controller = $this->_noacl['controller'];
				$action = $this->_noacl['action'];
			}
		}
 
		//définition des du module, du contrôleur et de l'action
		//qui sera ùaintenant routée
		//$request->setModuleName($module);
		$request->setControllerName($controller);
		$request->setActionName($action);
	}
}
Le code de mon 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
 
<?php
 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
 
	protected function _initDoctype()
	{
		$this->bootstrap('view');
		$view = $this->getResource('view');
		$view->doctype('XHTML1_STRICT');
	}
 
	protected function _initAutoloadRessource()
	{
		//configuration de l'Autoload
		$ressourceLoader = new Zend_Loader_Autoloader_Resource(array(
			'namespace' => 'Default',
			'basePath'  => dirname(__FILE__),
		));
 
		//permet d'indiquer les répertoires dans lesquels se trouveront nos classes:
		//notamment, l'ACL et le pugin
		$ressourceLoader->addResourceType('form', 'forms/', 'Form')
		->addResourceType('acl', 'acls/', 'Acl')
		->addResourceType('model', 'models/', 'Model')
		->addResourceType('plugin', 'plugins/', 'Controller_Plugin');
 
		return $ressourceLoader;
	}
 
	protected function _initAcl()
	{
		//Création d'une instance de notre ACL
		$acl = new Default_Acl_MyAcl();
 
		//enregistrement du plugin de manière à ce qu'il soit exécuté
		Zend_Controller_Front::getInstance()->registerPlugin(new Default_Controller_Plugin_Acl());
 
		//permet de définir l'acl par défaut à l'aide de vue, de cette manière
		//l'ACL est accessible dans les vues
		Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl);
 
		//vérifie si une identité existe et applique le rôle
		$auth = Zend_Auth::getInstance();
		$role = (!$auth->hasIdentity()) ? 'guest' : $auth->getIdentity()->role;
	}
}
Merci de votre aide,
cordialement,
chocofusee,

PS : Merci de m'indiquer si je fait du double poste.