IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

Problème d'ACL :/ [ZF 1.10]


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 108
    Points
    108
    Par défaut 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 : 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.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 108
    Points
    108
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] [SYMFONY2] problème de mise à jours ACL & ACE
    Par sohaieb dans le forum Symfony
    Réponses: 1
    Dernier message: 09/05/2015, 18h21
  2. Problème sur les ACLs
    Par syncope dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/09/2013, 00h01
  3. [ZF 1.11] Problème de reconnaissance de Plugin ACL
    Par chocofusee dans le forum Zend_Acl & Zend_Auth
    Réponses: 10
    Dernier message: 23/12/2011, 19h50
  4. Problème SVN : LDAP+ACL
    Par narjoussa3 dans le forum Subversion
    Réponses: 0
    Dernier message: 02/11/2011, 18h20
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo