Je cherche à concevoir un système ACL soutenu par la doctrine pour mon propre usage, même si je suis aux prises avec certaines des considérations de conception initiales.Création d'une ACL générique OO à l'aide de Doctrine
En ce moment, je regarde ce qui en fait basé sur des classes et des identifiants uniques, de les stocker dans une table en tant que tel:
Table: ACL
ResourceClass
ResourceKey
RoleClass
RoleKey
Permission
Il est évident que cela va exiger que j'Introspect sur les classes qui sont interrogeables pour dériver les valeurs ResourceClass correctes.
Je me demande si cette approche a déjà été suivie ou si quelqu'un a des conseils pour le faire de manière plus efficace. D'autres choses comme les relations récursives entre les rôles me confondent aussi car je ne suis pas sûr de savoir comment faire une requête récursive pour construire et ACL pour une ressource.
Je ne suis pas un grand fan de Zend ACL, donc s'il vous plaît pas de suggestions pour cela - je suis au courant!
D'autres précisions seront apportées à cette question au fur et à mesure que les gens pèsent, alors s'il vous plaît, gardez-moi! Cette question elle-même peut nécessiter quelques itérations! ;)
Génial, je vais devoir examiner tous les différents comportements. Juste pour être clair, vous avez utilisé l'implémentation NestedSet pour vos rôles/groupes? De cette façon, vous pouvez obtenir la liste complète des rôles/groupes, puis interroger la table qui stocke toutes vos autorisations avec toutes ces clés? –
Vous n'avez pas besoin de Doctrine pour cela. NestedSet est juste un modèle SQL pour stocker les structures de l'arbre dans la base de données. Vous pouvez l'implémenter comme vous le souhaitez. Stroring l'ACL comme NestedSet vous donne la capacité de trouver facilement les autorisations des enfants, des parents, des ascendants, etc. Cela convient très bien pour les grandes structures ACL. Pour les ACL simples, un tableau, Zend_Config (ou sérialiser l'ACL, si vous avez vraiment besoin de DB) est suffisant. – takeshin
Je ne suis pas intéressé par l'utilisation de zend_ACL car c'est assez compliqué. J'espère avoir plus de détails sur la façon dont vous stockez l'ACL comme un arbre, pour moi ce n'est pas vraiment un arbre de données. Alors que les rôles sont. J'ai cependant besoin de les stocker dans une base de données. C'est pourquoi j'utilise la doctrine. –