<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Security\Http\Event\LoginSuccessEvent;
use Symfony\Component\Security\Http\Event\LoginFailureEvent;
use Doctrine\ORM\EntityManagerInterface;
use App\Service\Kernel\MailService;
use App\Service\Kernel\KernelService;
class SecuritySubscriber implements EventSubscriberInterface
{
private $em;
private $mailService;
private $kernelService;
public function __construct(EntityManagerInterface $entityManager, KernelService $kernelService, MailService $mailService) {
$this->em = $entityManager;
$this->mailService = $mailService;
$this->kernelService = $kernelService;
}
public static function getSubscribedEvents(): array
{
// return the subscribed events, their methods and priorities
return [
/*KernelEvents::EXCEPTION => [
['processException', 10],
['logException', 0],
['notifyException', -10],
],*/
LoginSuccessEvent::class => 'onLoginSuccess',
LoginFailureEvent::class => 'onLoginFailure',
];
}
public function onLoginSuccess(LoginSuccessEvent $event): void
{
$user = $event->getUser();
$organization = $user->getOrganization();
$loginmail = $this->kernelService->getApplicationInfoValue("Kernel.LoginMail", $organization);
$applicationname = $this->kernelService->getApplicationInfoValue("Kernel.Applicationame", $organization);
if($loginmail == true)
{
$tomail = $this->kernelService->getApplicationInfoValue("Kernel.Loginemail", $organization);
$this->mailService->createMail($tomail, "Login success in " . $applicationname, 'login from '. $user. ' using ip:'.$event->getRequest()->getClientIp(), null, null, null, $organization);
}
// ...
//$this->mailService->createMail("hannes.vanderheyden@kreonta.com", "login success: ".$event->getUser(), "login success: ".$event->getUser());
}
public function onLoginFailure(LoginFailureEvent $event): void
{
// ...
//$info = "".$event->getException();
/*$info = "LoginFailure";
$info2 = "LoginFailure: " . $event->getRequest()->get("uuid");
$this->mailService->createMail("hannes.vanderheyden@kreonta.com",$info, $info2);*/
$organization = null;
$loginmail = $this->kernelService->getApplicationInfoValue("Kernel.LoginMail", $organization);
$applicationname = $this->kernelService->getApplicationInfoValue("Kernel.Applicationame", $organization);
if($loginmail == true)
{
$tomail = $this->kernelService->getApplicationInfoValue("Kernel.Loginemail", $organization);
$this->mailService->createMail($tomail, "Login failure " . $applicationname, 'login from '. $event->getRequest()->get("uuid"). ' using ip:'.$event->getRequest()->getClientIp(), null, null, null, $organization);
}
}
}