Emplacement d'un plugin et instanciation dans le bootstrap
Bonjour,
Comme indiqué dans ce message, je n'arrive pas à instancier le plugin pour gérer les ACL.
J'ai créé un répertoire application/plugin et y ai placé ce plugin appelé Auth.php :
Code:
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
| class Application_Plugin_Auth extends Zend_Controller_Plugin_Abstract
{
private $_auth = null;
private $_acl = null;
public function __construct($auth, $acl)
{
$this->_auth = $auth;
$this->_acl = $acl;
}
// Vérifie que l'utilisateur a la permission d'accéder au contrôleur de la page demandée
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if($this->_auth->hasIdentity())
{
// Récupération du type d'utilisateur (= rôle au sens acl)
$identity = $this->_auth->getIdentity();
$nom_user = $identity->uti_login;
$id_role = $identity->uti_id_type_utilisateur;
$utilisateur = new Application_Model_DbTable_Utilisateur();
$result = $utilisateur->getTypeUtilisateur($nom_user);
$nom_role = $result['tu_libelle'];
} // Fin if($this->_auth->hasIdentity())
$controller = $request->controller;
$resource = $this->_acl->has($controller) ? $controller : null;
if (!$this->_acl->isAllowed($nom_role, $resource))
{
// Type d'utilisateur non autorisé à accéder à la page
$request->setControllerName('Auth');
$request->setActionName('index');
} // Fin if (!$this->_acl->isAllowed($nom_role, $resource))
} // Fin function preDispatch
} |
Dans le Bootstrap.php, j'ai ajouté cette fonction :
Code:
1 2 3 4 5 6 7
| protected function _initAuth()
{
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('Auth'));
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Application_Plugin_Auth($auth));
} |
Mais à l'exécution, j'ai ce message d'erreur :
Citation:
Fatal error: Class 'Application_Plugin_Auth' not found in /var/www/html/stagmas/application/Bootstrap.php on line 29
J'ai essayé divers noms de classe de plugin, divers emplacements, notamment dans le répertoire library mais rien n'y fait, toujours le même type d'erreur de classe non trouvée.
Qu'est-ce qui manque ?