Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis en train de mettre le nez dans les ACL et j'ai une petite question...
Je souhaite que tous mes utilisateurs puisse accéder à l'action "list" de mon module mais sans être obligé de faire un "allow" dessus.
Par exemple :
$acl -> addRole( new Zend_Acl_Role("admin") );
$acl -> addRole( new Zend_Acl_Role("user") );
Je souaiterais eviter de faire :
$acl -> allow("admin", "article", "index_index");
$acl -> allow("user", "article", "index_index");
j'ai mis index_index dans le privilège car j'utilise bcp les modules...
J'ai également vu que je peux utiliser des héritages mais ce que je cherche c'est en gros :
Si je n'ai pas explicitement interdit l'action demandée, qu'elle soit automatiquement autorisée et je ne vois pas comment faire dans le plugin de test...
Cordialement,
Kaimite
Dernière modification par Kaimite (14-02-2010 11:44:50)
Hors ligne
Salut,
Je dis un peu au pif, as-tu essayé de passer null comme rôle dans ton allow ?
Sinon, avec l'héritage tu donnes le droit à ton rôle le plus bas et tous les autres hériterons de ses droits automatiquement.
$acl->addRole(new Zend_Acl_Role('user'), $acl->getDefaultRole()) ->addRole(new Zend_Acl_Role('user_plus_puissant'), 'user') ->addRole(new Zend_Acl_Role('admin')); $acl->add(new Zend_Acl_Resource('front_index')); $acl->deny(); $acl->allow($acl->getDefaultRole(), 'front_index', array('index')); // donc le guest, le user, et le user_plus_puissant $acl->allow('admin');
A+ benjamin.
Dernière modification par Delprog (12-02-2010 09:31:56)
Hors ligne
merci pour ta réponse.
En effet je pense que je vais essayer surement faire un "allow" general, en gros et faire des deny...
Le truc c'est que je ne vais pas avoir d'héritages ou très peu.
Je suis en train de faire l'intranet de ma boite qui est un groupe automobile, je vais donc avoir des profils assez différents.
Je pense que je vais faire un truc du genre :
$acl -> allow(null, "annuaire"); $acl -> deny("secretaire", "annuaire", "index_add"); $acl -> deny("secretaire", "annuaire", "index_update"); $acl -> deny("secretaire", "annuaire", "index_delete"); etc.
Comme ça si je rajoute une fonctionnalité elle pourra être accessible par defaut.
Question que je pose sans avoir regardé ( je le ferais ce soir en rentrant )
Je dois pouvoir faire :
$acl -> deny("secretaire", "annuaire", array("index_add", "index_update", "index_delete");
J'va jeter un oeil sur le getDefaultRole() que je ne conaissais pas...
$acl->deny();
sert à quoi exactement ? Tout interdire quelque soit le role, ressource, provilège ?
Cordialement,
Kaimite
Hors ligne
Kaimite a écrit:
Code:
$acl->deny();sert à quoi exactement ? Tout interdire quelque soit le role, ressource, provilège ?
Cordialement,
Kaimite
Oui, même chose pour allow() (ce que tu recherches)
Hors ligne
Euh pardon le getDefaultRole() est un truc à moi
J'ai étendu la classe Zend_Acl, et j'ai :
/** * Default role * * @var string */ protected static $_defaultRole = 'guest'; // plus loin /** * Returns the default role * * @return string */ public function getDefaultRole() { return self::$_defaultRole; }
J'aurais plus tendance à tout deny pour être sûr et ensuite donner les droits au fur et à mesure de l'arrivée des rôles et des ressources. Bon aussi je n'utilise pas les actions des controlleurs comme ressources donc je n'ai pas à ouvrir systématiquement les accès communs à tout le monde (comme les index par ex.).
Oui tu peux passer par un array() pour lister les actions autorisées (ou refusées) sur une même ressource
A+ benjamin.
Hors ligne
Delprog a écrit:
Euh pardon le getDefaultRole() est un truc à moi
On a tous etendus nos p'tits trucs à nous
J'va essayer tout çà !
Merci pour les infos.
Cordialement,
Kaimite
Hors ligne
@delprog Si ce ne sont pas les actions des controlleurs qui sont tes ressources, qu'est ce que c'est ? Quelles sont les autres moyens d'utiliser les ressources ? (un petit exemple ?)
Hors ligne
exemple : ressource = groupe d'utilisateurs
Hors ligne
Pages: 1