* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Listeners; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; class RequestHandledListener { public function handle($event) { $url = $event->request->server('REQUEST_URI'); if (strpos($url, "/admin/") !== 0) return; if (strtolower($event->request->server('REQUEST_METHOD')) === 'get') return; $start = $event->request->server('REQUEST_TIME_FLOAT'); $end = microtime(true); $request = $event->request->all(); if ($files = $event->request->allFiles()) { foreach ($files as $key => $uploadedFile) { $request[$key] = [ 'originalName' => $uploadedFile->getClientOriginalName(), 'mimeType' => $uploadedFile->getClientMimeType(), ]; } } $guard = config('logging.guard', false); $user = false; if ($guard) { $user = auth($guard)->user(); if ($user) { $user = [ 'id' => $user['id'], 'name' => $user['name'], 'username' => $user['username'], ]; } } $context = [ 'request' => $request, 'response' => $event->response instanceof SymfonyResponse ? json_decode($event->response->getContent(), true) : (string)$event->response, 'start' => $start, 'end' => $end, 'duration' => format_duration($end - $start), 'user' => $user ?? null, ]; logger_async(\config('logging.request.message'), $context) ->onConnection(\config('logging.request.connection')) ->onQueue(\config('logging.request.queue')); } }