src/Service/User/UserSubscriber.php line 59

  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: Михаил
  5.  * Date: 30.09.2018
  6.  * Time: 23:45
  7.  */
  8. namespace App\Service\User;
  9. use App\Service\Messaging\Email\Mailer;
  10. use App\Service\Messaging\Messages\Registration;
  11. use App\Service\User\Event\NewUserEvent;
  12. use App\Service\User\Event\UserCreatedEvent;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  15. class UserSubscriber implements EventSubscriberInterface
  16. {
  17.     private Mailer $letter;
  18.     private TokenStorageInterface $tokenStorage;
  19.     private UserManager $userManager;
  20.     private Registration $registration;
  21.     public function __construct(Mailer $letterRegistration $registrationTokenStorageInterface $tokenStorageUserManager $userManager)
  22.     {
  23.         $this->letter $letter;
  24.         $this->tokenStorage $tokenStorage;
  25.         $this->userManager $userManager;
  26.         $this->registration $registration;
  27.     }
  28.     /**
  29.      * Returns an array of event names this subscriber wants to listen to.
  30.      *
  31.      * The array keys are event names and the value can be:
  32.      *
  33.      *  * The method name to call (priority defaults to 0)
  34.      *  * An array composed of the method name to call and the priority
  35.      *  * An array of arrays composed of the method names to call and respective
  36.      *    priorities, or 0 if unset
  37.      *
  38.      * For instance:
  39.      *
  40.      *  * array('eventName' => 'methodName')
  41.      *  * array('eventName' => array('methodName', $priority))
  42.      *  * array('eventName' => array(array('methodName1', $priority), array('methodName2')))
  43.      *
  44.      * @return array The event names to listen to
  45.      */
  46.     public static function getSubscribedEvents(): array
  47.     {
  48.         return [
  49.             NewUserEvent::NAME => 'newUserEmail',
  50.             UserCreatedEvent::NAME => 'onCreate',
  51.         ];
  52.     }
  53.     public function newUserEmail(NewUserEvent $event)
  54.     {
  55.         if (!$event->getConfig()->needRegistrationEmail) return;
  56.         $message $this->registration->create($event->getUser(), $event->getPassword());
  57. //        return new Response($mes->getBody());
  58. //        $res = $sendLetter->sendMessage($mes);
  59. //
  60. //        $message = new \Swift_Message();
  61. //        $message->setTo($event->getUser()->getEmail(), $event->getUser()->getFullname());
  62. //        $message->setBody($event->getPassword());
  63.         $this->letter->sendMessage($message);
  64.     }
  65.     public function onCreate(UserCreatedEvent $event)
  66.     {
  67.         $token $this->tokenStorage->getToken();
  68.         if ($token && is_object($token->getUser())) {
  69.             return;
  70.         }
  71.         $user $event->getUser();
  72.         $this->userManager->authUser($user);
  73.     }
  74. }