AuditMiddleware.php
1 <?php 2 3 namespace App\Http\Middleware; 4 5 use App\Models\AuditLog; 6 use Carbon\Carbon; 7 use Closure; 8 use Illuminate\Http\Request; 9 10 class AuditMiddleware 11 { 12 /** 13 * Handle an incoming request. 14 * 15 * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next 16 * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse 17 */ 18 public function handle(Request $request, Closure $next) 19 { 20 $response = $next($request); 21 22 if (auth()->check()) { 23 $fingerprint = $request->input('fingerprint'); 24 $updates = $request->input('updates'); 25 $serverMemo = $request->input('serverMemo'); 26 27 $log = [ 28 'created_at' => Carbon::now(), 29 'ip' => $request->ip(), 30 'user_id' => auth()->user()->id, 31 'method' => $request->getMethod(), 32 'route' => $request->route()->getName(), 33 ]; 34 35 if ($request->input('updates') && isset($request->input('updates')[0]['payload']['event'])) { 36 $log['event'] = $updates[0]['payload']['event']; 37 $log['payload'] = $updates[0]['payload']; 38 $log['route'] = 39 $updates[0]['payload']['params'] 40 ? $updates[0]['payload']['params'][1] ?? null // falta el primero 41 : (isset($serverMemo['data']['component']) 42 ? $serverMemo['data']['component'] 43 : $fingerprint['name']); 44 } 45 46 if ($log['route'] != 'livewire.message' || (isset($log['event']) && $log['event'] != 'refresh')) { 47 AuditLog::create($log); 48 } 49 } 50 51 return $response; 52 } 53 }