$request->ip(), 'user_id' => optional($request->user())->id, 'method' => $request->method(), 'uri' => $request->getRequestUri(), 'input' => $request->all(), 'headers' => $request->headers->all(), ]); $apiKey = $request->header('X-API-KEY'); $validApiKey = false; // 1. API 키가 유효한지 확인 if ($apiKey) { $validApiKey = DB::table('api_keys') ->where('key', $apiKey) ->where('is_active', true) ->exists(); } if (!$validApiKey) { return response()->json(['message' => 'Unauthorized. Invalid or missing API key'], 401); } // Bearer 인증 (Sanctum) $user = []; if($token = $request->bearerToken()) { $accessToken = PersonalAccessToken::findToken($token); if ($accessToken && $accessToken->tokenable instanceof User) { $user = $accessToken->tokenable; if ($user) { $request->attributes->set('tenant_id', $user->tn_num); $request->attributes->set('api_user', $user->mb_num); } } } $response = $next($request); // 응답 정보 저장 Log::info('API Response', [ 'uri' => $request->getRequestUri(), 'status' => $response->getStatusCode(), 'content' => $response->getContent(), // 응답 body도 원하면! ]); return $response; } }