src/Bidcoz/Bundle/UserBundle/EventListener/UserRegistrationListener.php line 57

Open in your IDE?
  1. <?php
  2. namespace Bidcoz\Bundle\UserBundle\EventListener;
  3. use Bidcoz\Bundle\CoreBundle\Entity\Config;
  4. use Bidcoz\Bundle\UserBundle\PhoneNumberAssociationManager;
  5. use Doctrine\Persistence\ObjectManager;
  6. use FOS\UserBundle\Event\FilterUserResponseEvent;
  7. use FOS\UserBundle\Event\FormEvent;
  8. use FOS\UserBundle\Event\UserEvent;
  9. use FOS\UserBundle\FOSUserEvents;
  10. use RS\DiExtraBundle\Annotation as DI;
  11. use Symfony\Component\Security\Core\Security;
  12. /**
  13.  * @DI\Service
  14.  */
  15. class UserRegistrationListener
  16. {
  17.     const TEST_DOMAIN_REGEX '/test\.com$/';
  18.     private $em;
  19.     private $security;
  20.     private $config;
  21.     private $phoneNumberAssociationManager;
  22.     /**
  23.      * @DI\InjectParams({
  24.      *      "em" = @DI\Inject("doctrine.orm.default_entity_manager"),
  25.      *      "phoneNumberAssociationManager" = @DI\Inject("phone_number_association_manager"),
  26.      *      "security" = @DI\Inject("security.helper"),
  27.      * })
  28.      */
  29.     public function __construct(ObjectManager $emPhoneNumberAssociationManager $phoneNumberAssociationManagerSecurity $security)
  30.     {
  31.         $this->em                            $em;
  32.         $this->security                      $security;
  33.         $this->phoneNumberAssociationManager $phoneNumberAssociationManager;
  34.     }
  35.     /**
  36.      * @DI\Observe(FOSUserEvents::REGISTRATION_INITIALIZE)
  37.      */
  38.     public function onRegistrationInit(UserEvent $event)
  39.     {
  40.         $user $this->security->getUser();
  41.         if (!$user) {
  42.             $user $event->getUser();
  43.             $user->setUsername(uniqid(''true));
  44.             $user->setUserTerms($this->getCurrentTerms());
  45.         }
  46.     }
  47.     /**
  48.      * @DI\Observe(FOSUserEvents::REGISTRATION_COMPLETED)
  49.      */
  50.     public function onRegistrationComplete(FilterUserResponseEvent $event)
  51.     {
  52.         $user  $event->getUser();
  53.         $user->setLoggedIn();
  54.         $email $user->getEmailCanonical();
  55.         if (=== preg_match(self::TEST_DOMAIN_REGEX$email)) {
  56.             $user->setTest(true);
  57.         }
  58.     }
  59.     /**
  60.      * @DI\Observe(FOSUserEvents::REGISTRATION_SUCCESS)
  61.      */
  62.     public function onRegistrationSuccess(FormEvent $event)
  63.     {
  64.         $user $event->getForm()->getData();
  65.         $this->phoneNumberAssociationManager->associateNumbers($user);
  66.     }
  67.     protected function getCurrentTerms()
  68.     {
  69.         return $this->getCurrentConfig()->getUserTerms();
  70.     }
  71.     private function getCurrentConfig()
  72.     {
  73.         if (!$this->config) {
  74.             $this->config $this->em->getRepository(Config::class)->findActiveConfig();
  75.         }
  76.         return $this->config;
  77.     }
  78. }