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
- Faites de l'entité
Employeun 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.
- Dans
security.yaml, remplacez l'utilisateur en mémoire par un provider Doctrine : les employés sont desEmploye, retrouvés par leuremail.
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.