src/Aqarmap/Bundle/UserBundle/EventListener/RegistrationSuccessListener.php line 46

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\UserBundle\EventListener;
  3. use App\Service\Security\AuthServer;
  4. use Aqarmap\Bundle\ListingBundle\Entity\Phone;
  5. use Aqarmap\Bundle\ListingBundle\Entity\UserPhone;
  6. use Aqarmap\Bundle\UserBundle\Entity\User;
  7. use Aqarmap\Bundle\UserBundle\Model\QuickLead;
  8. use FOS\UserBundle\Event\FormEvent;
  9. use FOS\UserBundle\FOSUserEvents;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  13. class RegistrationSuccessListener implements EventSubscriberInterface
  14. {
  15.     private UrlGeneratorInterface $router;
  16.     private AuthServer $authServer;
  17.     /**
  18.      * Create a user subscriber instance.
  19.      */
  20.     public function __construct(UrlGeneratorInterface $routerAuthServer $authServer)
  21.     {
  22.         $this->router $router;
  23.         $this->authServer $authServer;
  24.     }
  25.     /**
  26.      * Register the listeners for the subscriber.
  27.      */
  28.     public static function getSubScribedEvents()
  29.     {
  30.         return [
  31.             FOSUserEvents::REGISTRATION_SUCCESS => [
  32.                 ['onRegistrationFormValidated'0],
  33.                 ['onRegistrationSuccess'0],
  34.             ],
  35.         ];
  36.     }
  37.     /**
  38.      * Send notification when registration completed.
  39.      */
  40.     public function onRegistrationSuccess(FormEvent $event): void
  41.     {
  42.         $url $this->router->generate('homepage');
  43.         $event->setResponse(new RedirectResponse($url));
  44.     }
  45.     public function onRegistrationFormValidated(FormEvent $event): void
  46.     {
  47.         /** @var QuickLead $lead */
  48.         $lead $event->getForm()->getData();
  49.         if ($lead instanceof QuickLead) {
  50.             $user = new User();
  51.             $user->setFullName($lead->getName());
  52.             $user->setEmailCanonical($lead->getEmail());
  53.             $user->setTempCountryCode($lead->getCountryCode());
  54.             $userPhone = new UserPhone();
  55.             $userPhone->setUser($user);
  56.             $userPhone->setPhone(new Phone($lead->getPhone(), $lead->getCountryCode()));
  57.             $userPhone->setMain(true);
  58.             $user->addPhone($userPhone);
  59.         } else {
  60.             /** @var User $user */
  61.             $user $event->getForm()->getData();
  62.         }
  63.         $this->authServer->register($user);
  64.     }
  65. }