Je réfléchis à la meilleure façon d'implémenter les permissions conditionnelles, c'est-à-dire que les utilisateurs et les équipes sont de m-à-m. Mais chaque équipe a également une relation "Leader" 1-à-m avec la table Utilisateur. Par souci de simplicité, disons que nous avons deux niveaux d'autorisation, "Utilisateur" et "Admin". Ensuite, disons que seules certaines tâches d'administration de l'équipe, c'est-à-dire les courriels de groupe, ne peuvent être envoyées que par le chef de l'équipe.Autorisations conditionnelles Symfony/sfDoctrineGuard
À l'heure actuelle, chaque action spécifique aux chefs d'équipe interroge la base de données pour vérifier si l'utilisateur actuel est le chef d'équipe (en gardant à l'esprit qu'un utilisateur peut diriger plusieurs équipes). Personnellement, je n'aime pas voir "if ($ user-> isLeader ($ team))" partout.
J'ai envisagé de définir une liste d'équipes dirigées par un utilisateur dans la session utilisateur lors de la connexion (ala phpBB) ou en utilisant un filtre symfony pour faire de même. Cependant, dans la première approche, les données peuvent devenir périmées dans le cas où un autre utilisateur peut changer le leader d'une équipe. La deuxième approche nécessite une requête de base de données supplémentaire sur chaque chargement de page.
De meilleures idées? Note: il y a application multiple dans l'un des projets qui ont besoin de partager le même modèle d'autorisation (c.-à-backend et api)
Ceci est très proche de ce que je suis après. Je vais probablement mettre en œuvre une solution similaire en utilisant memcache. – xzyfer