<?php
/**
* Created by PhpStorm.
* User: pasls
* Date: 9/18/19
* Time: 1:11 PM
*/
namespace App\EventListener;
use App\Entity\Admin;
use App\Util\LogHandler;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class AdminLogListener
{
protected $requestStack;
protected $logHandler;
protected $tokenStorage;
/**
* AdminLogListener constructor.
*
* @param TokenStorageInterface $tokenStorage
* @param RequestStack $requestStack
* @param LogHandler $logHandler
*/
public function __construct(TokenStorageInterface $tokenStorage, RequestStack $requestStack, LogHandler $logHandler)
{
$this->tokenStorage = $tokenStorage;
$this->logHandler = $logHandler;
$this->requestStack = $requestStack;
}
public function onKernelRequest(RequestEvent $event)
{
if($this->tokenStorage->getToken()) {
$user = $this->tokenStorage->getToken()->getUser();
if ($user instanceof Admin) {
$request = $this->requestStack->getCurrentRequest();
$record['client_ip'] = $request->getClientIp();
$record['client_port'] = $request->getPort();
$record['uri'] = $request->getUri();
$record['query_string'] = $request->getQueryString();
$record['method'] = $request->getMethod();
$record['request'] = $request->request->all();
$this->logHandler->write(['message' => "Route " . $request->getPathInfo() . " accessed.", 'extra' => $record]);
}
}
}
}