Série : Symfony 7
Fichiers : https://github.com/NouvelleTechno/OpenBlog
Bienvenue dans ce cinquième tutoriel de notre série Symfony 7. Nous allons aborder l'inscription et l'authentification des utilisateurs, en créant les formulaires de connexion et d'inscription pour notre blog OpenBlog.
Mise en Place des Formulaires d'Authentification
Création du Formulaire de Connexion
1. Utilisation du Maker Bundle :
Ouvrez votre terminal et exécutez la commande suivante pour créer l'authentificateur utilisateur :
symfony console make:auth
ATTENTION : depuis l'écriture de ce tutoriel, make:auth
a été déprécié et remplacé par la commande security
(Security (Symfony Docs))
2. Options de l'Assistant :
Choisissez les options suivantes lorsque l'assistant vous les propose :
- Créer un formulaire de connexion (option 1).
- Nom de la classe :
UsersAuthenticator
- Nom du contrôleur :
SecurityController
- Ajouter une route de déconnexion :
yes
- Ajouter le support du "Remember Me" :
yes
Cette commande génère plusieurs fichiers, y compris UsersAuthenticator.php
dans src/Security
, SecurityController.php
dans src/Controller
, et login.html.twig
dans templates/security
.
3. Configuration de Security.yaml :
Le fichier config/packages/security.yaml
a été mis à jour pour inclure l'authentificateur et les routes de connexion et de déconnexion. Vérifiez que les modifications sont correctes.
Personnalisation du Formulaire de Connexion
1. Modifiez login.html.twig
dans templates/security
pour personnaliser le formulaire de connexion :
{% extends 'base.html.twig' %}
{% block title %}Me connecter{% endblock %}
{% block body %}
<h1>Me connecter</h1>
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path('app_login') }}" method="post">
<div>
<label for="inputNickname">Pseudo</label>
<input type="text" id="inputNickname" name="_nickname" value="{{ last_username }}" required autofocus>
</div>
<div>
<label for="inputPassword">Mot de passe</label>
<input type="password" id="inputPassword" name="_password" required>
</div>
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<button type="submit">Me connecter</button>
</form>
<p><a href="{{ path('app_register') }}">Pas encore inscrit ? M'inscrire</a></p>
<p><a href="{{ path('app_forgot_password') }}">Mot de passe oublié</a></p>
{% endblock %}
2. Configurer la Redirection après Connexion :
Dans UsersAuthenticator.php
, remplacez le TODO
dans la méthode onAuthenticationSuccess
par une redirection vers la page d'accueil :
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response
{
return new RedirectResponse($this->urlGenerator->generate('app_home'));
}
Création du Formulaire d'Inscription
1. Utilisation du Maker Bundle :
Ouvrez votre terminal et exécutez la commande suivante pour créer le formulaire d'inscription :
symfony console make:registration-form
2. Options de l'Assistant :
Choisissez les options suivantes :
- Entité de l'utilisateur :
Users
- Ajouter une contrainte
UniqueEntity
pour s'assurer que les utilisateurs sont uniques :yes
- Ajouter un email de vérification :
no
- Authentifier automatiquement après l'inscription :
yes
Cette commande génère plusieurs fichiers, y compris RegistrationController.php
dans src/Controller
, RegistrationFormType.php
dans src/Form
, et register.html.twig
dans templates/registration
.
3. Personnalisation du Formulaire d'Inscription :
Modifiez register.html.twig
pour correspondre à votre formulaire d'inscription :
{% extends 'base.html.twig' %}
{% block title %}M'inscrire{% endblock %}
{% block body %}
<h1>M'inscrire</h1>
{{ form_start(registrationForm) }}
{{ form_row(registrationForm.nickname) }}
{{ form_row(registrationForm.email) }}
{{ form_row(registrationForm.plainPassword, {
label: 'Mot de passe'
}) }}
{{ form_row(registrationForm.agreeTerms) }}
<button type="submit">M'inscrire</button>
{{ form_end(registrationForm) }}
<p><a href="{{ path('app_login') }}">Déjà inscrit ? Me connecter</a></p>
{% endblock %}
Validation des Champs et Sécurité
Assurez-vous que tous les champs requis sont correctement validés et que les contraintes de sécurité sont en place. Vous pouvez ajouter des contraintes supplémentaires dans RegistrationFormType.php
et configurer les messages d'erreur appropriés.
Conclusion
Nous avons vu comment créer et personnaliser les formulaires de connexion et d'inscription pour notre projet OpenBlog. En utilisant le Maker Bundle de Symfony, nous avons pu rapidement mettre en place ces fonctionnalités essentielles. Dans les prochains tutoriels, nous continuerons à améliorer la sécurité et à ajouter de nouvelles fonctionnalités à notre blog multi-auteur.
Obtenir de l'aide
Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat.
Catégories : Symfony Symfony 7
Mots-clés : Utilisateurs Symfony inscription authentification user connexion auth Symfony 7