Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:24]
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 ====
-''​symfony console make:​user''​+Création de l'​entité USER : 
 +  * ''​symfony console make:​user''​ 
 + 
 +Puis pour créer les tables dans la base de données :  
 +  * ''​symfony console make:​migration''​ 
 +  * ''​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]]