Bonjour,

Je suis en train de développer un application en utilisant Symfony et me posais quelques questions quand à l'utilisation de certains outils comme par exemple ACL.

Description de l'application : j'ai six entrepôts dans chacun desquels il y a plusieurs services à l'intérieur desquels il y a encore plusieurs service etc etc (un service Informatique qui contiendrait par exemple un service Développement ainsi qu'un service Réseau. A l'intérieur du service Développement, il y a un service Programmation Orienté Objet, un service programmation Fonctionnelle etc)

Bref une hiérarchie de service qui peut évoluer dynamiquement.
J'ai des utilisateurs qui appartiennent à un ou plusieurs services. Ces utilisateurs peuvent avoir accès à des données mais seulement si ils en ont les droits.
Les droits sont représentés par l'appartenance à tel ou tel groupe :
la donnée 1 ne peut être vu que par le service Développement et le service Communication et la donnée 2 ne peut être vu que par le service Informatique et le service Marketing.

Cependant, la donnée 1, qui est visible par le service Développement, n'est pas visible par le service Informatique sachant que le service Développement appartient au service Informatique.

En clair : Service1 appartient à Service2 mais les infos de Service1 ne sont pas visibles par Service2. Par contre les infos de Service2 sont visibles par Service1.


Si on voulait se rapprocher d'une représentation conceptuel, ça correspondrait à un pattern Composite avec le Component qui est un service et la Leaf qui est un utilisateur.

Mes questions sont les suivantes :

-ais-je besoin d'utiliser la notion de groupe de FOSUserBundle ? Je pense que non car les droits étant par rapport aux services, je me dis que je peux m'en sortir en utilisant la notion de rôles proposés par Symfony (tel rôle est "inclus" dans tel rôle etc)
Le seul soucis étant la gestion de rôles pouvant être crées dynamiquement et stockés en bases tout en ayant cette notion de hiérarchie (composite n'est pas forcément évidente à implémenter en base, MySql)

ais-je besoin d'utiliser ACL ? J'essaie de me débrouiller pour faire sans mais n'ai peut-être pas le recul nécessaire pour cerner tout les aspects. Je le pense trop puissant pour ce que je veux dire mais peut-être que je sous-estime la complexité du projet et surestime les fonctionnalités "natives" de Symfony.

Je précise que je suis en stage et débutant en framework PHP (et par conséquent débutant en Symfony, commencé il y a une semaine).

Merci d'avance.

Cordialement.