Ceci est une ancienne révision du document !


Authentification

Prérequis

  • La sécurité doit etre installée : symfony composer req security

Utilisateurs

Création

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

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
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

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 }

config\packages\security.yaml
    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }  #<- a décommenter
        # - { path: ^/profile, roles: ROLE_USER }

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

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, [
               ...
                    ]),
                ],
            ])
        ;
    }

Sources & Ressources

Vous pourriez laisser un commentaire si vous étiez connecté.