2010-11-24 32 views
1

Je fais un nouveau projet dans symfony1.4. Maintenant, ce projet nécessite que les utilisateurs se connectent et naviguent, et comme tout projet de ce type nécessite un moyen de restreindre les utilisateurs en fonction des rôles. Je ne veux pas implémenter cela de manière évidente, c'est-à-dire avoir des attributs de rôles pour chaque utilisateur et avoir des rôles prédéfinis et les assigner aux utilisateurs. Le problème avec ceci est qu'il n'est pas très flexible car plus de rôles seront définis plus tard.Création de rôles d'utilisateur

Je pensais sur les lignes d'utiliser un modèle EAV ici, (pas sûr que je peux le faire dans symfony). Ce que vous en pensez, avez-vous de meilleures suggestions pour rendre les rôles utilisateur beaucoup plus flexibles lorsqu'ils sont ajoutés ou supprimés.

En outre, quel est le meilleur moyen d'afficher la page en fonction des rôles utilisateur, car je souhaite que certains éléments soient masqués en fonction des rôles. Dois-je comparer le rôle dans chaque page et masquer les éléments sur chaque page? Y a-t-il une meilleure solution?

S'il vous plaît faire la lumière sur ces derniers.

Merci

Répondre

2

Le plugin sfDoctrineGuard (http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin) est une façon assez complète de gestion de l'authentification utilisateur, les groupes et les informations d'identification. Les utilisateurs peuvent définir des autorisations individuellement ou en groupe, et l'accès à des sections de page spécifiques ou à des actions entières peut être restreint en fonction de ces autorisations. Vous pouvez définir de nouvelles informations d'identification d'utilisateur dans le code du contrôleur lui-même, par ex.

<?php 
$this->getUser()->setCredential('editor'); 
?> 

et vérifiez que l'utilisateur dispose des autorisations particulières dans les vues:

<?php 
if ($sf_user->hasCredential('editor')) { 
    // stuff only for editors 
} 
?> 

Cette page a beaucoup d'informations supplémentaires sur le plug-in ne sont pas couverts par le fichier Lisez-moi - http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation (bien qu'il fasse référence à Propel plutôt que Doctrine). Aussi la série suivante de courts tutoriels est très utile:

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-installation

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-administration

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-securing-actions

Et la page de tutoriel Symfony sur les utilisateurs:

http://www.symfony-project.org/jobeet/1_4/Doctrine/en/13

+1

Convenu que sfDoctrineGuradPlugin est probablement le chemin à parcourir. Le seul problème ici est la mise en cache exaspérante des informations d'identification, qui peut être réparée. –