src/EventSubscriber/EasyAdminSubscriber.php line 26

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. class EasyAdminSubscriber implements EventSubscriberInterface
  8. {
  9.     private $em;
  10.     public function __construct(ManagerRegistry $doctrine)
  11.     {
  12.         $this->em $doctrine->getManager();
  13.     }
  14.     public static function getSubscribedEvents(): array
  15.     {
  16.         return [
  17.             AfterEntityUpdatedEvent::class => ['approveUser'],
  18.         ];
  19.     }
  20.     public function approveUser(AfterEntityUpdatedEvent $event)
  21.     {
  22.         $entity $event->getEntityInstance();
  23.         if (!($entity instanceof User)) {
  24.             return;
  25.         }
  26.         $roles $entity->getRoles();
  27.         unset($roles['ROLE_USER']);
  28.         if (($key array_search("ROLE_APPROVED"$roles)) !== false) {
  29.             unset($roles[$key]);
  30.         }
  31.         if ($entity->isIsVerified()) {
  32.             $roles[] = "ROLE_APPROVED";
  33.         }
  34.         $roles array_unique($roles);
  35.         $entity->setRoles($roles);
  36.         $this->em->flush();
  37.         //exit();
  38.     }
  39. }