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:
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:
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:
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.