diff options
Diffstat (limited to 'src/Http/AccessLogMiddleware.php')
| -rw-r--r-- | src/Http/AccessLogMiddleware.php | 43 | 
1 files changed, 43 insertions, 0 deletions
| 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; +    } +} | 
