Trois employés, trois métiers :
- Gorm, le patron (
ROLE_PATRON), a tous les droits ; - Bruna, la cuisinière (
ROLE_CUISINIER), crée et modifie les plats ; - Pipin, au service, n'a que
ROLE_USER: il ne touche à rien.
Problème : Gorm n'a même pas le droit d'entrer en cuisine (il n'a pas ROLE_CUISINIER), n'importe quel cuisinier peut retirer un plat, et les clients voient des boutons « Modifier » et « Retirer » qui ne les concernent pas.
Votre mission
- Hiérarchie : le patron a aussi tous les droits d'un cuisinier.
- Autorisation : seul le patron peut retirer un plat (action
supprimerPlat()). - Affichage : chacun ne voit que ce qu'il a le droit de faire.
- « Modifier » et le lien « Cuisine » de la navigation : pour les cuisiniers (donc aussi le patron) ;
- « Retirer de la carte » : pour le patron seulement.
Connectez-vous avec les comptes créés par app:embaucher (la console les affiche) pour voir la différence.
Rappel
Cacher un bouton ne protège rien : n'importe qui peut envoyer la requête à la main. La vraie protection est côté serveur (#[IsGranted], access_control) ; masquer les boutons, c'est seulement pour le confort.