summaryrefslogtreecommitdiff
path: root/src/Http
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2025-04-09 22:22:54 +0100
committerSam Light <samlight1994@gmail.com>2025-04-09 22:22:54 +0100
commit6838dcd5e9c52e5b51d1565c3a24ec6f5557659b (patch)
tree94537df7153ee1209918194f21f7942609d4f7f4 /src/Http
parentee4c6f74e6842270783fecd74c27941395e7fe4a (diff)
Finish the middlewarev1.0.0
Diffstat (limited to 'src/Http')
-rw-r--r--src/Http/AccessLogMiddleware.php39
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;
}
}