src/EventSubscriber/EasyAdminSubscriber.php line 26
<?php
namespace App\EventSubscriber;
use App\Entity\User;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Doctrine\Persistence\ManagerRegistry;
class EasyAdminSubscriber implements EventSubscriberInterface
{
private $em;
public function __construct(ManagerRegistry $doctrine)
{
$this->em = $doctrine->getManager();
}
public static function getSubscribedEvents(): array
{
return [
AfterEntityUpdatedEvent::class => ['approveUser'],
];
}
public function approveUser(AfterEntityUpdatedEvent $event)
{
$entity = $event->getEntityInstance();
if (!($entity instanceof User)) {
return;
}
$roles = $entity->getRoles();
unset($roles['ROLE_USER']);
if (($key = array_search("ROLE_APPROVED", $roles)) !== false) {
unset($roles[$key]);
}
if ($entity->isIsVerified()) {
$roles[] = "ROLE_APPROVED";
}
$roles = array_unique($roles);
$entity->setRoles($roles);
$this->em->flush();
//exit();
}
}