Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-05-2013 21:56:24

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Problème d'ACL :/

Bonjour à tous,

Je développe actuellement une application pour une communauté de jeux en ligne, et je rencontre des soucis sur les ACL. L'authnetification se fait via un formulaire et Zend_Auth. Çà fonctionne très bien.

Je déclare mes règles d'ACL dans le bootstrap de mon application :
Pour le moment, je m'occupe que des droits TNA sur le controller donjons.

Code:

protected function _initACL ()
{
        $acl = new Zend_Acl();
        
        $acl->add(new Zend_Acl_Resource('index'));
        $acl->add(new Zend_Acl_Resource('user'));
        $acl->add(new Zend_Acl_Resource('donjons'));
        $acl->add(new Zend_Acl_Resource('events'));
        $acl->add(new Zend_Acl_Resource('items'));
        $acl->add(new Zend_Acl_Resource('wishes'));
        $acl->add(new Zend_Acl_Resource('members'));
        
        $acl->addRole(new Zend_Acl_Role('ally'));
        $acl->addRole(new Zend_Acl_Role('TNA'));
        $acl->addRole(new Zend_Acl_Role('admin'));
        
        // Contrôle d'accès pour les TNA        
        $acl->allow('TNA', 'donjons', 'index');
        $acl->deny('TNA', 'donjons', array('add', 'edit', 'delete'));
        
        // Contrôle d'accès pour les admins (Accès sans aucune restriction)
        $acl->allow('admin');
        
        Zend_Registry::set('aclSite', $acl);
}

Dans mon controller donjons, quand je fais un :

Code:

$auth = Zend_Auth::getinstance();
print_r($auth->getIdentity());

$acl = Zend_registry::get('aclSite');
print_r($acl->getRoles());

Les infos s'affichent très bien, mais lorsque je test l'autorisation comme ceci :

Code:

$acl->isAllowed($auth->getIdentity()->id_role, Core_Service_Common::getController(), Core_Service_Common::getAction()) ? 'autorisé' : 'refusé';

Si je me rend sur le controller donjons action index, çà me dit autorisé, et quand je vais sur controller donjons action edit, çà me dit aussi autorisé, or çà devrait dire refusé !

J'ai regardé l'API de Zend, sur des forums et tout, j'ai beau refaire comme c'est marqué sur les sites, et çà fait toujours pareil... Voyez vous où çà cloche ?

Merci d'avance.

Hors ligne

 

#2 07-05-2013 23:11:04

NicoC
Membre
Date d'inscription: 03-11-2012
Messages: 13

Re: Problème d'ACL :/

Si quelqu'un habite pas loin de Montréal, je l'autorise à venir me donner des coups de fouet !

Lors de mes controles, je faisais ceci :

Code:

$auth = Zend_Auth::getInstance()->getIdentity();  
$acl = Zend_Registry::get('aclSite');
      
echo '<br /><br /><br />Has : ';
echo ($acl->has(Core_Service_Common::getController())) ? 'resource OK' : 'resource non OK';
echo '<br />Roles : ';
print_r($acl->getRoles());
echo '<br /><br />Resources : ';
print_r($acl->getResources());
echo '<br /><br />Id role : ' . $acl->getRole($auth->id_role);
echo '<br /><br />' . $acl->isAllowed($auth->id_role, Core_Service_Common::getController(), Core_Service_Common::getAction()) ? 'autorisé' : 'refusé';

le isAllowed mettait toujours : autorisé... Maintenant ce n'est plus le cas depuis que j'ai enlevé le '<br /><br />'...
J'ai controllé avec différentes règles ACL, et c'est ok smile

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