yii : comment faire pour afficher le menu différent(s) par rôle d'utilisateur?
Q : Comment puis-je afficher le menu différent(s) par rôle d'utilisateur?
Description : l'application a de nombreux rôles. e.g HR manager, account Manager, directeur d'Exploitation, Employé, d'un Opérateur ...., etc. J'ai utilisé droits et yii-modules utilisateur pour la création de ces rôles. Ces rôles ont des fonctions différentes. Ainsi, l'application affichera le menu différent pour les différentes rôle de l'utilisateur après avoir connecté. Maintenant, je peux verrouiller la fonction pour les différents utilisateurs. e.g lorsque la fc crèche connecté, il/elle ne peut pas voie à d'autres fonction du rôle de l'utilisateur. Mais je ne sais pas comment faire pour afficher les RH Menu de Gestionnaire des ressources humaines, seulement.
Je ne suis pas un débutant pour yii. mais je suis un newbie de ces modules (rihgts et yii-utilisateur).
OriginalL'auteur Thu Ra | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez RBAC vous pouvez définir le "visible" param de CMenu d'éléments en fonction des privilèges aux utilisateurs, par exemple;
Cette façon, les utilisateurs ne seront en mesure de voir les éléments dans le menu, si ils ont des privilèges d'accès pour la zone.
[MODIFIER]
Comme par simaremare de commentaire ci-dessous, vous pouvez forcer la mise en cache de cette requête au-delà de la demande par l'extension de
CWebUser
. Tout d'abord, définissez votre utilisateur à exécuter par le biais de votre nouvelle classe (que nous appelleronsTWebUser
), donc dans votre main.php fichier de configuration;Nous devons maintenant créer
TWebUser
à cache ces au-delà de la demande (qui est ce queCWebUser
n' (le code source):Maintenant votre accès les résultats seront fixés pour l'ensemble de la session. Cela signifie que si vous modifiez les autorisations RBAC pour un compte donné, qu'ils vont avoir à vous déconnecter et vous reconnecter pour voir les nouveaux changements reflétés dans le navigateur.
J'espère que ça aide! Je suis sûr que j'ai trouvé cette solution de contournement de quelqu'un d'autre (probablement), mais je ne trouve pas le post original de leur donner crédit.
Salut @simaremare, c'est un bon point, la valeur par défaut de l'utilisateur de la classe (
CWebUser
) uniquement les caches de ces résultats pour la requête en cours, j'ai ajouté une mise à jour qui est un peu plus efficace.c'est beaucoup mieux @Stu, merci 🙂
bien expliqué, merci. Cela me donne plus d'idée sur la personnalisation RBAC.
OriginalL'auteur Stu
Vous envelopper un if autour des éléments de menu que vous pouvez ou ne voulez pas afficher.
Dans le if, vous devez tester si l'utilisateur se qualifie pour voir vos éléments de menu.
Par exemple:
OriginalL'auteur Ivo Renkema