<?php
namespace App\EventSubscriber;
use App\Event\CleanedOldPasswordEvent;
use App\Event\CreatedUserEvent;
use App\Event\DeactivedUserEvent;
use App\Service\MailService;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
class UserSubscriber implements EventSubscriberInterface
{
/** @var LoggerInterface $logger */
protected $logger;
/** @var MailService $mailer */
protected $mailer;
/**
* UserSubscriber constructor.
* @param LoggerInterface $userLogger
* @param MailService $mailer
*/
public function __construct(LoggerInterface $userLogger, MailService $mailer)
{
$this->logger = $userLogger;
$this->mailer = $mailer;
}
/**
* @return array
*/
public static function getSubscribedEvents(): array
{
return [
DeactivedUserEvent::class => 'onDeactivedUser',
CleanedOldPasswordEvent::class => 'onCleanedOldPassword',
CreatedUserEvent::class => 'onCreatedUser'
];
}
/**
* @param DeactivedUserEvent $event
*/
public function onDeactivedUser(DeactivedUserEvent $event)
{
$user = $event->getUser();
$this->logger->info('La cuenta de ' . $user->getUsername() . ' ha caducado');
}
/**
* @param CleanedOldPasswordEvent $event
*/
public function onCleanedOldPassword(CleanedOldPasswordEvent $event)
{
$user = $event->getUser();
$this->logger->info('El usuario ' . $user->getUsername() . ' tiene una contraseƱa que puede volver a usar');
}
/**
* @param CreatedUserEvent $event
* @throws LoaderError
* @throws RuntimeError
* @throws SyntaxError
* @throws TransportExceptionInterface
*/
public function onCreatedUser(CreatedUserEvent $event)
{
$this->mailer->createdUserToUser($event->getUser(), $event->getPlainPassword());
}
}