src/EventListener/PostValidate/ChangePasswordPostValidateTransformer.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\EventListener\PostValidate;
  3. use App\DTO\User\ChangePassword;
  4. use App\Service\Manager\UserManager;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpKernel\Event\ViewEvent;
  8. class ChangePasswordPostValidateTransformer implements EventSubscriberInterface
  9. {
  10.     private $userManager;
  11.     public function __construct(UserManager $userManager)
  12.     {
  13.         $this->userManager $userManager;
  14.     }
  15.     public static function getSubscribedEvents()
  16.     {
  17.         return [
  18.             PostValidateListener::POST_VALIDATE_TRANSFORMATION => 'transform',
  19.         ];
  20.     }
  21.     public function supportTransformation($payload)
  22.     {
  23.         return $payload instanceof ChangePassword;
  24.     }
  25.     /**
  26.      * @param ViewEvent $event
  27.      */
  28.     public function transform(ViewEvent $event)
  29.     {
  30.         /** @var ChangePassword $payload */
  31.         $payload $event->getControllerResult();
  32.         if (!$this->supportTransformation($payload)) {
  33.             return;
  34.         }
  35.         $this->userManager->updateCurrentUserPassword($payload->newPassword);
  36.         $event->setResponse(new JsonResponse());
  37.     }
  38. }