-t-il un sens d'utiliser l'architecture sfGuard à cette fin?
Absolument, mais vous aurez besoin de le réparer un peu. Par défaut, Symfony stocke les informations d'identification sur la session, ce qui signifie qu'elles ne seront pas invalidées avant l'expiration de la session. C'est un gros problème lorsque vous vous attendez à voir un effet immédiat en ajoutant quelqu'un à un groupe ou en leur accordant une permission.
Pour résoudre ce problème, vous aurez envie de faire l'une des suivantes:.
- Charger les informations d'identification sur chaque demande, plutôt que sur signe dans
- Lorsque les informations d'identification d'un utilisateur changent, les invalider soit via un paramètre de cache global dans APC (vous utilisez APC, non?) ou un paramètre sur le profil de l'utilisateur.
De toute façon, vous devrez vous familiariser avec le système utilisateur Symfony et sfGuardDoctrine. Jetez un oeil à sfGuardSecurityUser::signIn
afin que vous sachiez comment les informations d'identification fonctionnent par défaut.
Comment puis-je vérifier si un utilisateur spécifique a une autorisation de spcecific sur un groupe spécifique?
Tristan couvert cette jolie fond. Vous voudrez également jeter un oeil à la sfDoctrineGuard readme. Notez que pour toute solution dans laquelle les modifications des informations d'identification se produisent en direct pour les utilisateurs connectés, vous devrez remplacer la plupart des méthodes listées par Tristan, sinon toutes, pour effectuer une sorte d'invalidation.
En outre, vérifiez this related question, il peut être utile.
Merci. Je n'ai toujours pas eu une seule chose - comment puis-je vérifier une permission sur un groupe spécifique? like - L'utilisateur A a-t-il le type d'autorisation B sur le groupe C. – Yos
if ($ this-> getUser() -> hasCredential ('B') && $ this-> getUser() -> hasGroup ('C')) –
Oui , mais que faire si un utilisateur est un administrateur dans la communauté C, mais un utilisateur régulier dans la communauté D? dans votre code, il n'y a pas de condition comme "l'utilisateur A a un justificatif B sur le groupe C". – Yos