Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
prog:symfony:securite:authentification [30/09/2022 15:30] thierry [Création] |
prog:symfony:securite:authentification [01/10/2022 12:13] (Version actuelle) thierry [Protéger un chemin] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Authentification ====== | ====== Authentification ====== | ||
+ | ===== Prérequis ===== | ||
+ | * La sécurité doit etre installée : ''symfony composer req security'' | ||
+ | |||
===== Utilisateurs ===== | ===== Utilisateurs ===== | ||
==== Création ==== | ==== Création ==== | ||
Ligne 8: | Ligne 11: | ||
* ''symfony console make:migration'' | * ''symfony console make:migration'' | ||
* ''symfony console doctrine:migrations:migrate'' | * ''symfony console doctrine:migrations:migrate'' | ||
+ | |||
+ | ===== Formulaire d'enregistrement de nouveaux utilisateurs===== | ||
+ | Pour créer ce formulaire : | ||
+ | * ''symfony console make:registration-form'' | ||
+ | |||
+ | Cela nous créé plusieurs fichiers : | ||
+ | * Un contrôleur : ''src\Controller\RegistrationController.php'' | ||
+ | * Un Formulaire : ''src\Form\RegistrationFormType.php'' | ||
+ | * Un modèle Twig : ''templates\registration\register.html.twig'' | ||
+ | |||
+ | <note warning>Il se peux qu'une erreur de validation se produise | ||
+ | |||
+ | ''data.password This value should not be null.'' | ||
+ | |||
+ | Voir en bas de la page pour en savoir plus</note> | ||
+ | |||
+ | ===== Formulaire de connexion ===== | ||
+ | ''symfony console make:auth'' | ||
+ | |||
+ | Une fois que les fichiers sont générés ou modifiés il faut : | ||
+ | * Definir la redirection aprés authentification dans le fichier '' App\Security\AppAuthenticator''\\ voir la parite "TODO" dans ''App\Security\AppAuthenticator::onAuthenticationSuccess() '' | ||
+ | * Modifié le modèle : ''templates/security/login.html.twig''. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Protéger un chemin ===== | ||
+ | Pour interdire l’accès a un chemin sauf au utilisateurs authentifié, on modifie le fichier ''config\packages\security.yaml'' | ||
+ | |||
+ | On décommente la ligne '' - { path: ^/admin, roles: ROLE_ADMIN }'' | ||
+ | <code yaml config\packages\security.yaml> | ||
+ | access_control: | ||
+ | - { path: ^/admin, roles: ROLE_ADMIN } #<- a décommenter | ||
+ | # - { path: ^/profile, roles: ROLE_USER } | ||
+ | </code> | ||
+ | |||
+ | ===== Connexion par lien ===== | ||
+ | On peut se connecter directement via un lien que l'on a reçu par email, par exemple. | ||
+ | |||
+ | Voir la vidéo : [[https://www.youtube.com/watch?v=Id5y2aRUZok]] | ||
+ | |||
+ | |||
+ | |||
+ | ===== Erreurs ===== | ||
+ | ==== Formulaire de d'enregistrement ==== | ||
+ | Erreur ''data.password This value should not be null.'' | ||
+ | |||
+ | Il faut ajouter la ligne ''->add('password',HiddenType::class,['attr'=>['value'=>'dummy']]) '' dans le fichier ''\Form\RegistrationFormType.php'' | ||
+ | |||
+ | <code php src\Form\RegistrationFormType.php> | ||
+ | public function buildForm(FormBuilderInterface $builder, array $options): void | ||
+ | { | ||
+ | $builder | ||
+ | ->add('email') | ||
+ | .... | ||
+ | ->add('password',HiddenType::class,['attr'=>['value'=>'dummy']]) #<--- AJOUTER CETTE LIGNE | ||
+ | ->add('plainPassword', PasswordType::class, [ | ||
+ | ... | ||
+ | ]), | ||
+ | ], | ||
+ | ]) | ||
+ | ; | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
====== Sources & Ressources ====== | ====== Sources & Ressources ====== | ||
* [[https://symfony.com/doc/current/security.html]] | * [[https://symfony.com/doc/current/security.html]] | ||
+ | * [[https://www.youtube.com/watch?v=Id5y2aRUZok|Vidéo Youtube : Une authentification MAGIQUE dans Symfony ! de Yoandev]] | ||
+ | * [[https://www.youtube.com/watch?v=_GjHWa9hQic|Vidéo Youtube : 1H POUR COMPRENDRE L'AUTHENTIFICATION ! de Lior CHAMLA]] | ||
+ | * [[https://www.youtube.com/watch?v=lkmW57JblzI|Vidéo Youtube : Une double authentification avec Symfony en 30 minutes ! Yoandev]] | ||