Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonsoir, j'ai un modules admin que j'aimerais interdire l'accès, mais je ne vaiment pas comme m'y pendre,
il y a t'il une solution simple qui fait ceci:
si le mots de pass du formulaire est incorrecte, le modules admin est interdit (http;//monsite/admin)??
ou ce n'est pas comme ceci qu'il faut penser mais,
si le mot de passe incorrecte les action ajouter, modifier,supprimer et voir la partie administratif sont interdit?
j'ai essayer ce code mais il ne fonctionne pas
[lang=php] <?php class Application_Plugin_Acl extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request) { Zend_Debug::dump( $request); $acl = $this->_getAcl(); $role = $this->_getRole(); $resource = $request->getControllerName(); $privilege = $request->getActionName(); $allowed = $acl->isAllowed($role, $resource, $privilege); if (!$allowed) { $controller = 'auth'; $action = 'index'; $redirector = new Zend_Controller_Action_Helper_Redirector(); $redirector->gotoSimpleAndExit($action, $controller); } } protected function _getAcl() { if (null === $this->_acl) { $acl = new Zend_Acl(); // Roles $acl->addRole('guest'); $acl->addRole('user', 'guest'); $acl->addRole('admin', 'user'); // Resources $acl->add(new Zend_Acl_Resource('index')); $acl->add(new Zend_Acl_Resource('auth')); $acl->add(new Zend_Acl_Resource('error')); // Rules $acl->deny(); $acl->allow('user', 'index', array('index', 'add', 'edit', 'view')); $acl->allow('admin', 'index', array('delete')); $acl->allow('guest', 'auth', null); $acl->allow('guest', 'error', null); $this->_acl = $acl; } return $this->_acl; } protected function _getRole() { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $identity = $auth->getIdentity(); $role = empty($identity->role) ? 'user': $identity->role; } else { $role = 'guest'; } return $role; } }
Notice: Undefined property: Application_Plugin_Acl::$_acl in /var/www/lecon/application/plugins/Acl.php on line 25 //qui correspond à _Acl
d'après ce que j'ai essayer de comprendre dans la methode get acl permet de charger l'objet qui va déterminer qui a le droit de faire quoi, qui a le droit d'aller ou,
par contre que fait get role ?? c'est lu qui va récupérer le résultat du mot de pass et du login et dire à tous le droit ??
merci d'avance de vos éclaircicement
Dernière modification par keokaz (31-08-2011 13:41:44)
Hors ligne
Salut,
_getAcl récupère simplement l'identité de la personne connecté au travers de la classe Zend_Auth.
Normalement, après la phase d'authentification réussie, tu complètes l'identité de la personne avec un rôle que tu as choisi. C'est ce rôle qui est utilisé pour déterminer les droits d'accès à tes ressources.
Donc, dans ton apprentissage de ZF, il te manque encore le fonctionnement de l'authentification (Zend_Auth). Tu as un peu brûlé les étapes
En ce qui concerne ton erreur "notice", tu utilises une propriété "$_acl" qui n'est pas déclarée dans ta classe (propriété protégée/privée à ce que l'on peut en déduire du "underscore") et n'existe pas dans la classe mère Zend_Controller_Plugin_Abstract
The butcher
Hors ligne
merci de ta réponse j'aii pu apprendre avec le tluto webinar
Hors ligne