2 votes

Comment lister la structure CakePHP Acl ACO et ARO?

Je veux répertorier la base de données CakePHP Acl par Acos et indiquer si un Aro a la permission oui ou non.

Quel est le meilleur moyen de faire cela?

1voto

AD7six Points 22679

Utiliser le shell acl

Cake dispose d'un shell acl intégré qui fournit une interface pour modifier ou visualiser vos données acl. Il inclut une fonction view (arborescence) qui permet de voir les objets de contrôle d'accès (aco, "choses") et les hiérarchies de données des objets de demande d'accès (aro, utilisateurs) :

Exemple d'arborescence aco :

$ Console/cake acl view aco

Bienvenue dans CakePHP v2.4.0-dev Console
---------------------------------------------------------------
App : app
Chemin : /var/www/app/
---------------------------------------------------------------
Arborescence Aco :
---------------------------------------------------------------
  [1] contrôleurs
    [2] Articles
  [3] Articles
    [4] index
---------------------------------------------------------------

Exemple d'arborescence aro :

$ Console/cake acl view aro

Bienvenue dans CakePHP v2.4.0-dev Console
---------------------------------------------------------------
App : app
Chemin : /var/www/app/
---------------------------------------------------------------
Arborescence Aro :
---------------------------------------------------------------
  [1] Groupe.1
---------------------------------------------------------------

Il y a aussi une fonction check pour déterminer si un aro donné peut accéder à un aco donné :

$ Console/cake acl check Groupe.1 controleurs/Articles

Bienvenue dans CakePHP v2.4.0-dev Console
---------------------------------------------------------------
App : app
Chemin : /var/www/app/
---------------------------------------------------------------
Groupe.1 est autorisé.

Qui peut accéder à quoi n'est pas possible

La nature des données acl est telle qu'il est relativement coûteux de vérifier une seule combinaison (peut ce utilisateur spécifique accéder cet objet spécifique) et (bien que possible) impraticable de construire une solution générale pour "qui peut accéder à quoi", c'est pourquoi il n'existe aucun moyen fourni par le cœur pour répondre à cette question.

Pour une liste donnée d'acos cependant, vous pouvez facilement les parcourir en appelant AclComponent::check pour obtenir une liste de réponses à la question "à quoi ce utilisateur spécifique peut accéder". Les données acl peuvent être consultées comme toute autre donnée modèle en utilisant les modèles Aro et Aco.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X