src/EventSubscriber/EasyAdminSubscriber.php line 35

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  8. class EasyAdminSubscriber implements EventSubscriberInterface
  9. {
  10.     public function __construct(private readonly UserPasswordHasherInterface $hasher) {}
  11.     /**
  12.      * @inheritDoc
  13.      */
  14.     public static function getSubscribedEvents(): array
  15.     {
  16.         return [
  17.             BeforeEntityPersistedEvent::class => 'setUserPassword',
  18.             BeforeEntityUpdatedEvent::class => 'updateUserPassword'
  19.         ];
  20.     }
  21.     private function hashPasswordUser($entity): void
  22.     {
  23.         if(!($entity instanceof User)) {
  24.             return;
  25.         }
  26.         $pass $this->hasher->hashPassword($entity$entity->getPassword());
  27.         $entity->setPassword($pass);
  28.     }
  29.     public function setUserPassword(BeforeEntityPersistedEvent $event): void
  30.     {
  31.         $entity  $event->getEntityInstance();
  32.         $this->hashPasswordUser($entity);
  33.     }
  34.     public function updateUserPassword(BeforeEntityUpdatedEvent $event): void
  35.     {
  36.         $entity  $event->getEntityInstance();
  37.         $this->hashPasswordUser($entity);
  38.     }
  39. }