Partage
  • Partager sur Facebook
  • Partager sur Twitter

Create User par EasyAdmin impossible...

    6 mars 2024 à 19:57:34

    Bonjour à tous.

    Lorsque je passe par le formulaire d'inscription, le compte en question fonctionne parfaitement bien.
    Cependant, lorsque j'essaie de créer un utilisateur via la fonction de création d'EasyAdmin, l'utilisateur est bien enregistré dans la base de données mais le mot de passe n'est pas hashé. De plus, il est impossible de se connecter avec cet utilisateur.

    D'où pourrait venir le problème ?


    <?php
    
    namespace App\Form;
    
    use App\Entity\User;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
    use Symfony\Component\Form\Extension\Core\Type\PasswordType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Validator\Constraints\IsTrue;
    use Symfony\Component\Validator\Constraints\Length;
    use Symfony\Component\Validator\Constraints\NotBlank;
    
    class RegistrationFormType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options): void
        {
            $builder
                ->add('prenom', null, [
                    'label' => false,
                    'attr' => ['placeholder' => 'Prénom'],
                ])
                ->add('nom', null, [
                    'label' => false,
                    'attr' => ['placeholder' => 'Nom'],
                ])
                ->add('email', null, [
                    'label' => false,
                    'attr' => ['placeholder' => 'Adresse e-mail'],
                ])
    
                ->add('plainPassword', PasswordType::class, [
                    // instead of being set onto the object directly,
                    // this is read and encoded in the controller
                    'label' => false,
                    'mapped' => false,
                    'attr' => ['autocomplete' => 'new-password', 'placeholder' => 'Mot de passe'],
                    'constraints' => [
                        new NotBlank([
                            'message' => 'Please enter a password',
                        ]),
                        new Length([
                            'min' => 6,
                            'minMessage' => 'Your password should be at least {{ limit }} characters',
                            // max length allowed by Symfony for security reasons
                            'max' => 4096,
                        ]),
                    ],
                ]);
        }
    
        public function configureOptions(OptionsResolver $resolver): void
        {
            $resolver->setDefaults([
                'data_class' => User::class,
            ]);
        }
    }
    

    <?php
    
    namespace App\Controller\Admin;
    
    use App\Entity\User;
    use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
    use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
    use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
    use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
    
    class UserCrudController extends AbstractCrudController
    {
        public static function getEntityFqcn(): string
        {
            return User::class;
        }
    
        
    
        /*
        public function configureFields(string $pageName): iterable
        {
            return [
                IdField::new('id'),
                TextField::new('title'),
                TextEditorField::new('description'),
            ];
        }
        */
    }
    

    <?php
    
    namespace App\Controller\Admin;
    
    use App\Entity\Article;
    use App\Entity\Categorie;
    use App\Entity\SousCategorie;
    use App\Entity\User;
    use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
    use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
    use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
    use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    
    class DashboardController extends AbstractDashboardController
    {
        #[Route('/admin', name: 'admin')]
        public function index(): Response
        {
    
            $adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
            return $this->redirect($adminUrlGenerator->setController(CategorieCrudController::class)->generateUrl());
    
        }
    
        public function configureDashboard(): Dashboard
        {
            return Dashboard::new()
                ->setTitle('Lewikidegti');
        }
    
        public function configureMenuItems(): iterable
        {
            yield MenuItem::linkToCrud('Categories', 'fas fa-list', Categorie::class);
            yield MenuItem::linkToCrud('SousCategories', 'fas fa-list', SousCategorie::class);
            yield MenuItem::linkToCrud('Articles', 'fas fa-list', Article::class);
            yield MenuItem::linkToCrud('Users', 'fas fa-list', User::class);
        }
    }
    

    <?php
    
    namespace App\Entity;
    
    use App\Repository\UserRepository;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
    use Symfony\Component\Security\Core\User\UserInterface;
    
    #[ORM\Entity(repositoryClass: UserRepository::class)]
    #[UniqueEntity(fields: ['email'], message: 'There is already an account with this email')]
    class User implements UserInterface, PasswordAuthenticatedUserInterface
    {
        #[ORM\Id]
        #[ORM\GeneratedValue]
        #[ORM\Column]
        private ?int $id = null;
    
        #[ORM\Column(length: 180, unique: true)]
        private ?string $email = null;
    
        /**
         * @var list<string> The user roles
         */
        #[ORM\Column]
        private array $roles = [];
    
        /**
         * @var string The hashed password
         */
        #[ORM\Column]
        private ?string $password = null;
    
        #[ORM\Column(length: 255)]
        private ?string $nom = null;
    
        #[ORM\Column(length: 255)]
        private ?string $prenom = null;
    
        public function getId(): ?int
        {
            return $this->id;
        }
    
        public function getEmail(): ?string
        {
            return $this->email;
        }
    
        public function setEmail(string $email): static
        {
            $this->email = $email;
    
            return $this;
        }
    
        /**
         * A visual identifier that represents this user.
         *
         * @see UserInterface
         */
        public function getUserIdentifier(): string
        {
            return (string) $this->email;
        }
    
        /**
         * @see UserInterface
         *
         * @return list<string>
         */
        public function getRoles(): array
        {
            $roles = $this->roles;
            // guarantee every user at least has ROLE_USER
            $roles[] = 'ROLE_USER';
    
            return array_unique($roles);
        }
    
        /**
         * @param list<string> $roles
         */
        public function setRoles(array $roles): static
        {
            $this->roles = $roles;
    
            return $this;
        }
    
        /**
         * @see PasswordAuthenticatedUserInterface
         */
        public function getPassword(): string
        {
            return $this->password;
        }
    
        public function setPassword(string $password): static
        {
            $this->password = $password;
    
            return $this;
        }
    
        /**
         * @see UserInterface
         */
        public function eraseCredentials(): void
        {
            // If you store any temporary, sensitive data on the user, clear it here
            // $this->plainPassword = null;
        }
    
        public function getNom(): ?string
        {
            return $this->nom;
        }
    
        public function setNom(string $nom): static
        {
            $this->nom = $nom;
    
            return $this;
        }
    
        public function getPrenom(): ?string
        {
            return $this->prenom;
        }
    
        public function setPrenom(string $prenom): static
        {
            $this->prenom = $prenom;
    
            return $this;
        }
    
    }

     




    -
    Edité par Chacha52 6 mars 2024 à 19:58:41

    • Partager sur Facebook
    • Partager sur Twitter

    Create User par EasyAdmin impossible...

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    • Editeur
    • Markdown