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);
}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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());
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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é';
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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é';
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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