src/EventListener/EasyAdminListener.php line 64

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright (c) 2019-2022, MND Next GmbH - www.mndnext.de
  4.  */
  5. namespace App\EventListener;
  6. use App\Entity\Admin;
  7. use App\Entity\Company;
  8. use App\Entity\Employee;
  9. use App\Entity\User;
  10. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterCrudActionEvent;
  11. use FOS\UserBundle\Event\GetResponseUserEvent;
  12. use FOS\UserBundle\FOSUserEvents;
  13. use FOS\UserBundle\Model\UserManagerInterface;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  17. class EasyAdminListener implements EventSubscriberInterface
  18. {
  19.     /**
  20.      * @var UrlGeneratorInterface
  21.      */
  22.     private $router;
  23.     private $userManager;
  24.     public function __construct(UserManagerInterface $userManagerUrlGeneratorInterface $router)
  25.     {
  26.         $this->userManager $userManager;
  27.         $this->router $router;
  28.     }
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return array(
  32.             AfterCrudActionEvent::class => array('onAfterNewUser'),
  33.             FOSUserEvents::REGISTRATION_CONFIRM => array('onRegistrationConfirm')
  34.         );
  35.     }
  36.     public function onAfterNewUser(AfterCrudActionEvent $event)
  37.     {
  38.         $entity $event->getAdminContext()->getEntity();
  39.         if (!($entity instanceof Admin) && !($entity instanceof Company) && !($entity instanceof Employee)) {
  40.             return;
  41.         }
  42.         if ($entity instanceof Admin) {
  43.             /** @var Admin $admin */
  44.             $admin $entity;
  45.             $admin->addRole('ROLE_NEW_ADMIN');
  46.         } elseif ($entity instanceof Company) {
  47.             /** @var Company $company */
  48.             $company $entity;
  49.         } else {
  50.             /** @var Employee $employee */
  51.             $employee $entity;
  52.             $employee->addRole('ROLE_NEW_EMPLOYEE');
  53.         }
  54.     }
  55.     public function onRegistrationConfirm(GetResponseUserEvent  $event)
  56.     {
  57.         if ($event->getUser()->getRegisterState() == User::REGISTERED_ADMIN) {
  58.             $url $this->router->generate('new_password');
  59.             $event->setResponse(new RedirectResponse($url));
  60.         } elseif ($event->getUser()->getRegisterState() == User::REGISTERED_SELF) {
  61.             $event->getUser()->setRegisterState(User::REGISTERED_CONFIRMED);
  62.         }
  63.     }
  64. }