- 12 heures
- Difficile
Mis à jour le 26/08/2024
Approfondir son usage de Symfony
Compétences évaluées
- Approfondir son usage de Symfony
Description
Votre application de veille technique prend forme, mais pour l'instant elle est ouverte aux quatre vents. Comme votre client souhaite qu'elle ne soit accessible qu'à ses employés, il va falloir la sécuriser avec une méthode d'authentification et une gestion d'autorisation.
Votre Product Owner, Pierre, vous transmet la demande du client :
Nous avons déjà un serveur d'authentification actuellement mais nous comptons en changer à plus ou moins court terme. Donc en attendant, un simple formulaire de connexion suffira. Par contre, il faudra que la liste des utilisateurs soit restreinte, et que seuls les utilisateurs dont l'adresse e-mail se termine par le nom de notre entreprise puissent s'enregistrer.
Je vous fournirai plus tard la liste des utilisateurs admin, autorisés à gérer les autres utilisateurs. Les autres doivent pouvoir créer des ressources et gérer les ressources qu'ils ont créées uniquement ; par contre ils doivent pouvoir démarrer la lecture de n'importe quelle ressource, y compris celle des autres.
Maintenant que le besoin est posé, vous revoyez le MCD de votre classe User avec Juliette, puis vous vous mettez au travail.
Question 1
Vous commencez par créer votre classe
User
pour représenter les utilisateurs. Vous savez que certaines interfaces sont obligatoires pour que Symfony puisse utiliser cette classe dans son système de sécurité.Sachant que vous devrez gérer les mots de passe utilisateurs, quelles sont-elles ?
Attention, plusieurs réponses sont possibles.Symfony\Component\Security\Core\User\UserInterface
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface
Symfony\Component\Security\Core\User\LoggableUserInterface
Symfony\Component\Security\Core\User\GetPasswordInterface
Question 2
Votre classe est créée en mode minimal, avec tout ce qu'il lui faut comme interface(s). Maintenant, il reste à ajouter des propriétés qui sont sur votre MCD. Votre classe doit pouvoir être enregistrée en base de données, et vous avez déjà ajouté les attributs Doctrine pour transformer cette classe en entité.
Quelles sont les bonnes méthodes pour ajouter les propriétés manquantes à votre classe ?
Attention, plusieurs réponses sont possibles.La commande
symfony console make:entity User
Étendre la classe User et ajouter les propriétés dans une nouvelle classe
Les ajouter dans l'entité User avec leurs attributs Doctrine
Question 3
Votre classe
User
est prête à être utilisée, il ne reste plus qu'à récupérer vos utilisateurs à chaque connexion.Comment indiquer à Symfony de le faire ?
En ajoutant de la configuration dans
config/packages/security.yaml
pour indiquer à Symfony d'utiliser un UserProvider de typeentity
En utilisant notre
UserRepository
dans le controller qui gère le formulaire de loginEn utilisant un
UserProviderInterface
dans le controller qui gère le formulaire de loginEn ajoutant de la configuration dans
config/packages/security.yaml
pour indiquer à Symfony d'utiliser notreUserRepository
- Formations jusqu’à 100 % financées
- Date de début flexible
- Projets professionnalisants
- Mentorat individuel