<?php
namespace App\EventListener\PostValidate;
use App\DTO\User\ChangePassword;
use App\Service\Manager\UserManager;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\ViewEvent;
class ChangePasswordPostValidateTransformer implements EventSubscriberInterface
{
private $userManager;
public function __construct(UserManager $userManager)
{
$this->userManager = $userManager;
}
public static function getSubscribedEvents()
{
return [
PostValidateListener::POST_VALIDATE_TRANSFORMATION => 'transform',
];
}
public function supportTransformation($payload)
{
return $payload instanceof ChangePassword;
}
/**
* @param ViewEvent $event
*/
public function transform(ViewEvent $event)
{
/** @var ChangePassword $payload */
$payload = $event->getControllerResult();
if (!$this->supportTransformation($payload)) {
return;
}
$this->userManager->updateCurrentUserPassword($payload->newPassword);
$event->setResponse(new JsonResponse());
}
}