src/EventsSubscriber/EasyAdmin/EasyAdminSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventsSubscriber\EasyAdmin;
  4. use App\Entity\Manager;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeCrudActionEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class EasyAdminSubscriber implements EventSubscriberInterface
  10. {
  11.     private ?string $password null;
  12.     public function __construct(
  13.         private EntityManagerInterface $entityManager,
  14.     ) {
  15.     }
  16.     public static function getSubscribedEvents()
  17.     {
  18.         return [
  19.             BeforeCrudActionEvent::class => ['getManagerPassword'],
  20.             AfterEntityUpdatedEvent::class => ['setManagerPassword'],
  21.         ];
  22.     }
  23.     public function getManagerPassword(BeforeCrudActionEvent $event): void
  24.     {
  25.         $entity $event->getAdminContext()->getEntity();
  26.         if (!$entity->getInstance() instanceof Manager) {
  27.             return;
  28.         }
  29.         $this->password $entity->getInstance()->getPassword();
  30.     }
  31.     public function setManagerPassword(AfterEntityUpdatedEvent $event): void
  32.     {
  33.         $entity $event->getEntityInstance();
  34.         if (!$entity instanceof Manager) {
  35.             return;
  36.         }
  37.         if ($entity->getPassword() === '' && $this->password !== null) {
  38.             $entity->setPassword($this->password);
  39.             $this->entityManager->flush();
  40.         }
  41.     }
  42. }