Affiner les Contrôles d'AccèsMieux définir les Contrôles d'AccèsL'ACL basique définie dans le chapitre précédentmontre comment plusieurs privilèges peuvent être alloués pour l'ensemble de l'ACL (toutes les ressources). En pratique, toutefois, les contrôles d'accès ont souvent des exceptions et des degrés de complexité variables. Zend_Acl permet d'atteindre ce degré de finesse d'une manière directe et flexible. Pour l'exemple du CMS, nous avons déterminé que bien que le groupe "Staff" couvre les besoins de la plupart des utilisateurs, un groupe "Marketing" est nécessaire. Ce groupe doit avoir accès à la newsletter et aux dernières news dans le CMS. Le groupe va recevoir la possibilité de publier et d'archiver à la fois des newsletters et des news. De plus, il a été demandé que le groupe "Staff" puisse voir les nouveaux textes, mais pas les nouvelles news. Enfin, il devrait être impossible pour tout le monde (y compris les administrateurs) d'archiver un contenu qui n'aurait une durée de vie que de 1 ou 2 jours. En premier lieu, nous modifions le registre des rôles pour refléter ces changements. Nous avons dit que le groupe "Marketing" a les même permissions de base que "Staff". Donc nous créons "marketing" pour qu'il hérite des permissions de "staff".
Ensuite, notez que les contrôles d'accès plus haut font référence à des ressources (ex. "newsletters", "dernières news", "annonces"). Maintenant, nous ajoutons ces Ressources :
Ensuite c'est simplement une manière de définir ces règles spécifiques sur les parties cibles de l'ACL :
On peut maintenant interroger les ACL sur base des dernières modifications :
Retirer les Contrôles d'AccèsPour retirer une ou plusieurs règles des ACL, utilisez simplement la méthode removeAllow() ou removeDeny(). Comme pour allow() et deny(), vous pouvez utiliser une valeur NULL pour indiquer que la méthode s'applique à tous les rôles, ressources et / ou privilèges.
Les privilèges peuvent être modifiés de manière incrémentielle comme indiqué au dessus, mais une valeur NULL pour les privilèges écrase ces modifications incrémentielles.
|