src/EventSubscriber/EasyAdminUserSubscriber.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\AdminUser;
  4. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Event\EntityLifecycleEventInterface;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  9. class EasyAdminUserSubscriber implements EventSubscriberInterface
  10. {
  11.     private UserPasswordEncoderInterface $passwordEncoder;
  12.     public function __construct(UserPasswordEncoderInterface $passwordEncoder)
  13.     {
  14.         $this->passwordEncoder $passwordEncoder;
  15.     }
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return [
  19.             BeforeEntityUpdatedEvent::class => ['preUpdateEntity'],
  20.             BeforeEntityPersistedEvent::class => ['preUpdateEntity'],
  21.         ];
  22.     }
  23.     public function preUpdateEntity(EntityLifecycleEventInterface $event): void
  24.     {
  25.         $entity $event->getEntityInstance();
  26.         if ($entity instanceof AdminUser) {
  27.             $this->preUpdateAdminUser($entity);
  28.         }
  29.     }
  30.     private function preUpdateAdminUser(AdminUser &$user): void
  31.     {
  32.         $plainPassword $user->getPassword();
  33.         if (!empty($plainPassword)) {
  34.             $newPassword $this->passwordEncoder->encodePassword($user$plainPassword);
  35.             $user->setPassword($newPassword);
  36.         }
  37.     }
  38. }