diff options
author | Sam Light <sam@lightscale.co.uk> | 2025-04-09 22:22:54 +0100 |
---|---|---|
committer | Sam Light <samlight1994@gmail.com> | 2025-04-09 22:22:54 +0100 |
commit | 6838dcd5e9c52e5b51d1565c3a24ec6f5557659b (patch) | |
tree | 94537df7153ee1209918194f21f7942609d4f7f4 /src/Http | |
parent | ee4c6f74e6842270783fecd74c27941395e7fe4a (diff) |
Finish the middlewarev1.0.0
Diffstat (limited to 'src/Http')
-rw-r--r-- | src/Http/AccessLogMiddleware.php | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/src/Http/AccessLogMiddleware.php b/src/Http/AccessLogMiddleware.php index 92f9810..5e021a0 100644 --- a/src/Http/AccessLogMiddleware.php +++ b/src/Http/AccessLogMiddleware.php @@ -1,6 +1,6 @@ <?php -namespace Lightscale\AccessLog\Http; +namespace Lightscale\LaralightAccessLog\Http; use Lightscale\AccessLog\Models\AccessLog; @@ -11,23 +11,38 @@ use Closure; class AccessLogMiddleware { - public function properties(Request $request, Response $response): ?iterable + protected function properties(Request $request, Response $response): ?iterable { - return null; + $props = []; + + if (config('access_log.log_ip')) { + $props['ip'] = $request->ip(); + } + + if (config('access_log.log_referer')) { + $props['referer'] = $request->header('Referer'); + } + + if (config('access_log.log_user_agent')) { + $props['user_agent'] = $request->userAgent(); + } + + return empty($props) ? null : $props; } - public function shouldLog(): boolean + protected function shouldLog(Request $request): bool { - return config('access_log.enabled'); + $logUnauth = config('access_log.log_unauthenticated'); + $shouldLogAuth = $logUnauth ? true : $request->user() !== null; + return config('access_log.enabled') && $shouldLogAuth; } - public function createLog(Request $request, Response $response): void + protected function createLog(Request $request, Response $response): void { $model = config('access_log.model'); $log = new $model([ 'path' => $request->path(), - 'referer' => $request->referer(), - 'status' => $request->status(), + 'status' => $response->status(), 'properties' => $this->properties($request, $response), ]); $log->user()->associate($request->user()); @@ -36,8 +51,12 @@ class AccessLogMiddleware public function handle(Request $request, Closure $next): Response { - $response = $next(); - if ($this->shouldLog()) $this->createLog($request, $response); + $response = $next($request); + + if ($this->shouldLog($request)) { + $this->createLog($request, $response); + } + return $response; } } |