Le registre des employés

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

Notions abordées : UserInterfaceProvider entityHachage

Bruna ne travaille plus seule : Gorm veut entrer en cuisine lui aussi, et il a embauché Pipin (au service). Déclarer chaque employé dans security.yaml, et redéployer à chaque embauche ? Impensable. Les comptes vont vivre en base.

Pour Symfony, un utilisateur est simplement un objet qui implémente UserInterface : un identifiant et des rôles. Et s'il a un mot de passe, il implémente aussi PasswordAuthenticatedUserInterface.

Votre mission

  1. Faites de l'entité Employe un utilisateur Symfony avec un mot de passe :
    • on se connecte avec son email ;
    • tout employé connecté a au moins le rôle ROLE_USER, en plus des rôles enregistrés.
  2. Dans security.yaml, remplacez l'utilisateur en mémoire par un provider Doctrine : les employés sont des Employe, retrouvés par leur email.

La commande app:embaucher (déjà écrite) crée trois comptes, avec des mots de passe hachés par UserPasswordHasherInterface. Elle échoue tant qu'Employe n'est pas un utilisateur : relancez-la ensuite dans la console, elle affiche les comptes de démonstration.

Rappel

Symfony ne stocke jamais un mot de passe en clair. hashPassword() utilise l'algorithme du security.yaml (auto : bcrypt ou argon2), et le pare-feu le vérifie à la connexion.