Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-08-2011 00:56:48

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

[resolut]coment fonctionne ACL?

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

Code:

[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;
}

    
}

Code:

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

 

#2 29-08-2011 21:15:01

thebutcher
Nouveau membre
Date d'inscription: 29-08-2011
Messages: 6

Re: [resolut]coment fonctionne ACL?

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 smile

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

 

#3 31-08-2011 13:41:28

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Re: [resolut]coment fonctionne ACL?

merci de ta réponse j'aii pu apprendre avec le tluto webinar

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages