• 12 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

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.

MCD de la classe User
MCD de la classe User
  • 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 type  entity

    • En utilisant notre  UserRepository  dans le controller qui gère le formulaire de login

    • En utilisant un  UserProviderInterface  dans le controller qui gère le formulaire de login

    • En ajoutant de la configuration dans  config/packages/security.yaml  pour indiquer à Symfony d'utiliser notre  UserRepository

Et si vous obteniez un diplôme OpenClassrooms ?
  • Formations jusqu’à 100 % financées
  • Date de début flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous