Je travaille sur une application web où différents groupes d'utilisateurs ont un accès différent aux ressources . Jusqu'à présent, rien de spécial, je suppose, mais il y a une mise en garde; l'application est divisée en "domaines" de sorte que chacune de nos organisations clientes a son propre contenu. Ici, j'utilise un modèle plus simple pour illustrer mon problème.Comment représenter différents domaines d'application dans une ACL?
Chaque domaine a les mêmes types de ressources, mais chaque instance de ressource est connectée à un seul domaine. Voici ce qu'il ressemblerait à un domaine:
Resources: stories, announcements
Roles:
guest // read only access
root // unlimited access
editor // like guest, but with r/w access to resource "stories"
admin // r/w access to both resources
Je suis venu avec deux approches différentes pour mettre en œuvre cette aide de Zend_Acl, la première consiste à utiliser simplement différents ACLs pour différents domaines, la copie du ci-dessus pour chaque domaine. La seconde est d'utiliser une ACL et y ajouter de nouveaux rôles pour chaque domaine:
Domains: domain0, domain1, domain2
Roles:
guest
root
editor-domain0
editor-domain1
editor-domain2
admin-domain0
admin-domain1
admin-domain2
La deuxième approche a l'avantage qu'un utilisateur peut être administrateur d'un domaine tout étant rédacteur en chef d'un autre (qui pourrait arriver). Mais il a aussi l'inconvénient que les rôles ne sont pas statiques - nous devons générer chaque fois que nous ajoutons ou supprimons un domaine. Est-ce que l'une ou l'autre de ces approches est bonne ou existe-t-il de meilleures façons de traiter plusieurs domaines?
J'ai utilisé une variante de cette réponse; mais au lieu de sous-classer Zend_Acl, j'ai créé des méthodes utilitaires avec la même signature dans une autre classe qui appelle les méthodes appropriées dans Zend_Acl. –