Il ne recupere pas ta variable role car tu ne la renvoie pas dans ta vue...
Remplace @if($role->role == 1) par @if(Auth::user()->role == 1)
Bonjour,
Je suis en train de développer un site sous Laravel pour m'entrainer au framework, et dans ce site, les utilisateurs auront un "rôle", qui définira les limites de ce qu'ils peuvent faire sur le site (invité, commercial, admin...), pour ça j'ai mis un champs "rôle" dans ma table User et j'y ai attribué un chiffre.
Maintenant, pour faire un test, j'ai voulu faire le code suivant :
L'utilisateur que je connecte à pour role "0", du coup à la connexion je voudrais qu'il n'ai que le "Logout1" d'affiché.
J'ai essayé avec ces lignes de code dans le AuthController
Cependant, j'ai juste une erreur de "undefinable variable : role" lorsque je fais la connexion.
ça semble lié au fait que je vais sur ma page "acceuil" qui elle, ne récupère pas les données du User::get(), ou du moins j'ai l'impression que c'est ça ^^
Du coup, avez vous une idée de pourquoi il ne récupère pas ma variable role ?
Il ne recupere pas ta variable role car tu ne la renvoie pas dans ta vue...
Remplace @if($role->role == 1) par @if(Auth::user()->role == 1)
Je te conseille d'utiliser :
D'abord un exemple, puis la source de la doc tout en bas.
Exemple :
1/ DANS APP/POLICIES/Nom_de_ton_modelPolicy.phparoundici dans l'exemple APP/POLICIES/ActivityPolicy.php
2/ Dans ton controller - (Ici activitiesController.php) tu peux utiliser la méthode authorize() pour lui dire que cette action suit les règles précedemment définies
3/ Et si tu le veux tu peux aussi afficher des éléments ou non dans la vue en suivant les policies
Conclusion : Cette façon de gérer les rôles est pour moi la plus appropriée car elle se fait dans un fichier unique, le modèle lui s'occuppant plutôt des données et de leur validation.
C'est ma façon de faire sur LARAVEL après avoir analysé toutes les façons de le faire.