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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$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.