mirror of
https://github.com/jbcr/core.git
synced 2026-03-31 05:12:11 +02:00
69 lines
1.8 KiB
PHP
69 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Bolt\Log;
|
|
|
|
use Bolt\Entity\User;
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
use Symfony\Component\HttpKernel\KernelInterface;
|
|
use Symfony\Component\Security\Core\Security;
|
|
use Webmozart\PathUtil\Path;
|
|
|
|
class RequestProcessor
|
|
{
|
|
/** @var RequestStack */
|
|
protected $request;
|
|
|
|
/** @var Security */
|
|
private $security;
|
|
|
|
/** @var string */
|
|
private $projectDir;
|
|
|
|
public function __construct(RequestStack $request, Security $security, KernelInterface $kernel)
|
|
{
|
|
$this->request = $request;
|
|
$this->security = $security;
|
|
$this->projectDir = $kernel->getProjectDir();
|
|
}
|
|
|
|
public function processRecord(array $record): array
|
|
{
|
|
$request = $this->request->getCurrentRequest();
|
|
|
|
/** @var User $user */
|
|
$user = $this->security->getUser();
|
|
|
|
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 7);
|
|
|
|
if (! empty($request)) {
|
|
$record['extra'] = [
|
|
'client_ip' => $request->getClientIp(),
|
|
'client_port' => $request->getPort(),
|
|
'uri' => $request->getUri(),
|
|
'query_string' => $request->getQueryString(),
|
|
'method' => $request->getMethod(),
|
|
];
|
|
}
|
|
|
|
if (! empty($user)) {
|
|
$record['user'] = [
|
|
'id' => $user->getId(),
|
|
'username' => $user->getUsername(),
|
|
'roles' => $user->getRoles(),
|
|
];
|
|
}
|
|
|
|
$record['location'] = [
|
|
'file' => '…/' . Path::makeRelative($trace[5]['file'], $this->projectDir),
|
|
'line' => $trace[5]['line'],
|
|
'class' => $trace[6]['class'],
|
|
'type' => $trace[6]['type'],
|
|
'function' => $trace[6]['function'],
|
|
];
|
|
|
|
return $record;
|
|
}
|
|
}
|