src/EventSubscriber/EasyAdminSubscriber.php line 43

Open in your IDE?
  1. <?php
  2.   namespace App\EventSubscriber;
  3.   use App\Entity\Main\User;
  4.   use App\Entity\Customer\Customer;
  5.   use Doctrine\ORM\EntityManagerInterface;
  6.   use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  7.   use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  8.   use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9.   use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  10.   class EasyAdminSubscriber implements EventSubscriberInterface
  11.   {
  12.       private $entityManager;
  13.       private $passwordEncoder;
  14.       public function __construct(EntityManagerInterface $entityManagerUserPasswordEncoderInterface $passwordEncoder)
  15.       {
  16.           $this->entityManager $entityManager;
  17.           $this->passwordEncoder $passwordEncoder;
  18.       }
  19.       public static function getSubscribedEvents()
  20.       {
  21.           return [
  22.               BeforeEntityPersistedEvent::class => [['addCustomer'],['addUser']],
  23.               BeforeEntityUpdatedEvent::class => ['updateUser'], 
  24.           ];
  25.       }
  26.       public function updateUser(BeforeEntityUpdatedEvent $event)
  27.       {
  28.           $entity $event->getEntityInstance();
  29.           if (!($entity instanceof User)) {
  30.               return;
  31.           }
  32.           $this->setPassword($entity);
  33.       }
  34.       public function addCustomer(BeforeEntityPersistedEvent $event)
  35.       {
  36.           $entity $event->getEntityInstance();
  37.           if (!($entity instanceof Customer)) {
  38.               return;
  39.           }
  40.           $this->setCustomerPassword($entity);
  41.       }
  42.       public function addUser(BeforeEntityPersistedEvent $event)
  43.       {
  44.           $entity $event->getEntityInstance();
  45.           if (!($entity instanceof User)) {
  46.               return;
  47.           }
  48.           $this->setPassword($entity);
  49.       }
  50.       /**
  51.        * @param User $entity
  52.        */
  53.       public function setPassword(User $entity): void
  54.       {
  55.           $pass $entity->getPassword();
  56.           $entity->setPassword(
  57.               $this->passwordEncoder->encodePassword(
  58.                   $entity,
  59.                   $pass
  60.               )
  61.           );
  62.           $this->entityManager->persist($entity);
  63.           $this->entityManager->flush();
  64.       }
  65.       /**
  66.        * @param Customer $entity
  67.        */
  68.       public function setCustomerPassword(Customer $entity): void
  69.       {
  70.           $pass $entity->getPassword();
  71.           $entity->setPassword(
  72.               $this->passwordEncoder->encodePassword(
  73.                   $entity,
  74.                   $pass
  75.               )
  76.           );
  77.           $this->entityManager->persist($entity);
  78.           $this->entityManager->flush();
  79.       }
  80.   }