src/EventSubscriber/LoginListener.php line 27
<?php
namespace App\EventSubscriber;
use App\Controller\ServiziController;
use App\Entity\User;
use Doctrine\Persistence\ConnectionRegistry;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\AuthenticationEvents;
use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent;
class LoginListener implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
{
private $servizi;
public function __construct(ServiziController $servizi)
{
$this->servizi = $servizi;
}
/**
* @param AuthenticationSuccessEvent $event
*/
public function onLoginSuccess(AuthenticationSuccessEvent $event){
if($event->getAuthenticationToken()->getUser()) {
/** @var User $user */
$user = $event->getAuthenticationToken()->getUser();
if ($user instanceof User) {
$user->setLastLogin(new \DateTime());
$em = $this->servizi->doctrine->getManager();
$em->persist($user);
$em->flush();
if($this->servizi->checkRole('ROLE_ADMIN')){
$this->servizi->ScriviRegistroAttivitaUtente($user, "Login", "Accesso effettuato");
}
}
}
}
/**
* @inheritDoc
*/
public static function getSubscribedEvents()
{
return [
AuthenticationEvents::AUTHENTICATION_SUCCESS => [
['onLoginSuccess', 0],
],
];
}
}