À chacun son rôle

Exercice 3 sur 6 du chapitre 4 · 200 XP · 5 objectifs vérifiés par des tests

Notions abordées : role_hierarchyIsGrantedis_granted()

Trois employés, trois métiers :

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

  1. Hiérarchie : le patron a aussi tous les droits d'un cuisinier.
  2. Autorisation : seul le patron peut retirer un plat (action supprimerPlat()).
  3. 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.