Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-11-2009 11:37:59

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Héritage entre privillèges et resource

Bonjour à tous

Je suis face à un comportement des acl et je sais pas si elles réagissent convenablement ou bien si c'est une erreur de ma part. J'explique:
J'ai défini un role 'guest' par exemple et une resource 'index', jusque la c'est classique.
J'ai ensuite défini les acl comme ceci:
cas 1:   $acl->allow('guest', 'index');
            $acl->allow('guest', 'index', 'voir');
cas 2:   $acl->allow('guest', 'index');
            $acl->allow('guest', 'index', 'voir');
            $acl->deny('guest', 'index', 'mod');

Quand j'interroge mon acl sur la ressource 'index' (isAllowed('guest', 'index')) dans le cas 1 j'ai true et dans le cas 2 j'ai false. Est ce normal? est ce que dès que j'ai un privillège sous une ressource à deny, la resource "globale" est mise à false?

Vincent

Hors ligne

 

#2 24-11-2009 11:29:20

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: Héritage entre privillèges et resource

Il n'y a personne qui peut me confirmer le comportement de mes acl?

Vincent

Hors ligne

 

#3 24-11-2009 13:37:41

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Héritage entre privillèges et resource

Je ne suis pas allé voir précisément, mais ça me paraît logique comme comportement que la resource globale soit interdite si tu interdis un élément à l'intérieur de celle ci.

Après en termes de priorité, ce sont les derniers droits enregistrés qui sont prioritaires.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 24-11-2009 16:41:50

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: Héritage entre privillèges et resource

Oui c'est vrai que dans un sens c'est logique mais ca me pose problème car du coup quand j'utilise mes acl dans zend_navigation, il ne me montre pas le lien qui est autorisé :s

Merci

Vincent

Hors ligne

 

#5 24-11-2009 17:46:42

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Héritage entre privillèges et resource

J'imagine que "index" c'est un contrôleur. Tu n'as pas une action qui correspond ?
un truc du genre :

Code:

$acl->allow('guest', 'index','index');

Ca règlerait ton problème.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#6 25-11-2009 11:36:54

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: Héritage entre privillèges et resource

Salut Philippe,

Oui "index" est bien un controlleur et j'ai des actions qui en découle mais si tu veux dans mon menu géré par zend_navigation, à l'affichage j'ai un truc du genre:
  index
   |- Voir
   |- Modifier

J'avais pensé que si j'ai un deny au niveau du controlleur, il ne me montre pas les actions qui en découle (je n'aurai jamais un deny au niveau d'un controlleur et un allow sur une action du meme controlleur) mais que par contre il m'aurait quand meme bien montré la branche autorisée (dans le cas ou j'autorisais et le controleur et l'action) et ici c'est pas le cas

C'est vrai que si j'arrive pas, je ne mettrai pas mes acl au niveau du controlleur mais bien sur tous mes controlleurs + actions. Mais c'est domage de pas pouvoir utiliser la puissance des parents - enfants mis à disposition par zf.

Merci pour ton aide

A+ Vincent

Hors ligne

 

#7 25-11-2009 13:51:29

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Héritage entre privillèges et resource

Dans ta navigation, index pointe vers une action (pas juste un contrôleur). Je ne connais pas Zend_Navigation, mais tu ne peux pas lui dire que le parent "index" pointe vers telle action spécifiquement ?

index
   |- Voir
   |- Modifier

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#8 25-11-2009 14:24:21

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Héritage entre privillèges et resource

Salut,

J'utilise Zend_Navigation et Zend_Acl comme toi et je n'ai pas ce genre de problème.

Voilà en simplifié comment je fais (tout est totalement fictif hein) :

Un morceau de ma classe Acl :

Code:

$this->add(new Zend_Acl_Resource('front'));
$this->add(new Zend_Acl_Resource('front_index'));
$this->add(new Zend_Acl_Resource('front_activity'));
$this->add(new Zend_Acl_Resource('front_wallet'));

$this->addRole(new Zend_Acl_Role('peon'), $this->getDefaultRole())
     ->addRole(new Zend_Acl_Role('manager'), 'peon')
     ->addRole(new Zend_Acl_Role('admin'));

$this->deny();
$this->allow('peon', 'front_index');                       
$this->allow('peon', 'front_activity', array('index', 'export'));
$this->allow('peon', 'front_wallet', array('index', 'export'));
$this->allow('manager', 'front_activity');
$this->allow('manager', 'front_wallet');
$this->allow('admin');

La config de Zend_Navigation (MVC) :

Code:

<front id="front" label="" title="" action="index" controller="index" resource="front_index">
    <pages>
        <!-- Dashboard -->
        <dashboard id="dashboard" label="Tableau de bord" title="" class="menu-a-dashboard" action="index" controller="index" resource="front_index" />
        <!-- Activity -->
        <activity id="activity" label="Activité" title="" class="menu-a-activity" action="index" controller="activity">                                                
            <pages>
                <group id="activity_group" label="Groupement" title="" action="index" controller="activity" resource="front_activity" privilege="index" />                        
                <export id="activity_export" label="Exportations" title="" action="export" controller="activity" resource="front_activity" privilege="export" />                        
                <privacy id="activity_privacy" label="Données confidentielles" title="" action="privacy" controller="activity" resource="front_activity" privilege="privacy" />
            </pages>            
        </activity>
                
        <!-- Wallet -->
        <wallet id="wallet" label="Portefeuille" title="" class="menu-a-wallet" action="index" controller="wallet">                
            <pages>
                <group id="wallet_group" label="Groupement" title="" action="index" controller="wallet" resource="front_wallet" privilege="index" />
                <export id="wallet_export" label="Exportations" title="" action="export" controller="wallet" resource="front_wallet" privilege="export" />
                <privacy id="wallet_privacy" label="Données confidentielles" title="" action="privacy" controller="wallet" resource="front_wallet" privilege="privacy" />
            </pages>            
        </wallet>
    </pages>        
</front>
<admin>
<!-- .... -->
</admin>

Dans la méthode init() de mon helper d'action Acl :

Code:

$this->_actionController->view->navigation()->setAcl($this->_acl)->setRole($this->_getActualRole());

Et avec tout ça ça fonctionne à merveille smile


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#9 25-11-2009 15:16:54

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: Héritage entre privillèges et resource

@Philippe si le controlleur index pointe vers l'action index et je pense que tu as raison moi je ne défini aucune acl pour "index - index", mon action index as les droits du controlleur index. Je pense que la solution c'est de créer une acl "index - index" spécifique

@Delprog, oui je fais quasiment la meme chose que toi sauf que je mettais des acl sur le menu parent et du coup il ne m'affiche rien de la branche du menu dès que j'ai une acl de la branche à deny (acl qui ne contient pas controlleur + action mais juste controlleur).

Je vais essayer de faire des acl controlleur + action et ca devrait fonctionner.

En tout cas merci à vous 2 pour votre aide. Je vous tiendrai au courrant dès que j'aurai testé (peut etre pas tout de suite car je fais ca en dehors de mes heures de boulot qui sont déjà nombreuses ces temps ci wink )

A+ Vincent

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