From 73083c611f1ddcc41ec712d5f4448df1270bc176 Mon Sep 17 00:00:00 2001
From: Sam Light <sam@lightscale.co.uk>
Date: Wed, 9 Apr 2025 21:34:16 +0100
Subject: Created migration, Model, Middleware, config

---
 src/Http/AccessLogMiddleware.php | 43 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 src/Http/AccessLogMiddleware.php

(limited to 'src/Http/AccessLogMiddleware.php')

diff --git a/src/Http/AccessLogMiddleware.php b/src/Http/AccessLogMiddleware.php
new file mode 100644
index 0000000..92f9810
--- /dev/null
+++ b/src/Http/AccessLogMiddleware.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Lightscale\AccessLog\Http;
+
+use Lightscale\AccessLog\Models\AccessLog;
+
+use Illuminate\Http\Request;
+use Symfony\Component\HttpFoundation\Response;
+
+use Closure;
+
+class AccessLogMiddleware
+{
+    public function properties(Request $request, Response $response): ?iterable
+    {
+        return null;
+    }
+
+    public function shouldLog(): boolean
+    {
+        return config('access_log.enabled');
+    }
+
+    public function createLog(Request $request, Response $response): void
+    {
+        $model = config('access_log.model');
+        $log = new $model([
+            'path' => $request->path(),
+            'referer' => $request->referer(),
+            'status' => $request->status(),
+            'properties' => $this->properties($request, $response),
+        ]);
+        $log->user()->associate($request->user());
+        $log->save();
+    }
+
+    public function handle(Request $request, Closure $next): Response
+    {
+        $response = $next();
+        if ($this->shouldLog()) $this->createLog($request, $response);
+        return $response;
+    }
+}
-- 
cgit v1.2.3