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.
Dans mon controller donjons, quand je fais un :
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); }
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
3
4
5
6 $auth = Zend_Auth::getinstance(); print_r($auth->getIdentity()); $acl = Zend_registry::get('aclSite'); print_r($acl->getRoles());
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é !
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é';
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.
Partager