<?php
// src/App/EventSubscriber/TokenSubscriber.php
namespace App\EventSubscriber;
use App\Controller\ActivityCheckController;
use App\Entity\User;
use App\Services\ActivityLogger;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
//use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\HttpKernel\KernelEvents;
//use Symfony\Component\HttpFoundation\Session\Session;
use App\Entity\LastActivity;
use Symfony\Component\Security\Core\Security;
use Doctrine\ORM\EntityManager;
class ActivityCheckSubscriber implements EventSubscriberInterface {
// private $lastActivity;
private $user;
private $entityManager;
private $activityLogger;
// private $requestStack;
public function __construct(
Security $security,
EntityManagerInterface $entityManager,
ActivityLogger $activityLogger
// RequestStack $requestStack
) {
// $this->lastActivity = new LastActivity();
$this->user = $security->getUser();
$this->entityManager = $entityManager;
$this->activityLogger = $activityLogger;
// $this->requestStack = $requestStack;
}
public function onKernelController(ControllerEvent $event) {
$controller = $event->getController();
// when a controller class defines multiple action methods, the controller
// is returned as [$controllerInstance, 'methodName']
if (is_array($controller)) {
$controller = $controller[0];
}
if ($controller instanceof ActivityCheckController) {
$this->activityLogger->logActivity($this->entityManager, $this->user);
// if (is_a($this->user, User::class) && $this->user->getPasswordChanged() < (new \DateTime('- 12 months'))) {
// $this->requestStack->getSession()->getFlashBag()->add(
// 'danger',
// 'Z bezpečnostných dôvodov si musíte <a href="/my-password-change">zmeniť heslo</a>!'
// );
// }
}
}
public static function getSubscribedEvents() {
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}