diff --git a/src/app/Observers/LogCaptureObserver.php b/src/app/Observers/LogCaptureObserver.php index 9b17064..1ccbfd3 100644 --- a/src/app/Observers/LogCaptureObserver.php +++ b/src/app/Observers/LogCaptureObserver.php @@ -43,13 +43,36 @@ class LogCaptureObserver { $logDataContainer = app(LogDataContainer::class); + $requestBody = $event->request->getBody()->getContents(); + $logDataContainer->addCapturedHttpClientEvent([ 'request' => [ 'method' => $event->request->getMethod(), 'uri' => $event->request->getUri(), 'headers' => $event->request->getHeaders(), + 'body' =>self::hideSensitiveData($requestBody) ], 'options' => $event->options, ]); } + + /** + * @param $content + * @return false|string + */ + private static function hideSensitiveData($content) + { + $data = json_decode($content, true); + + // Define an array of field names that contain sensitive information + $sensitiveFields = explode(',', config('laravel-logs-layer.sensitive_data')); + + foreach ($sensitiveFields as $field) { + if (isset($data[$field])) { + $data[$field] = '*****'; + } + } + + return json_encode($data); + } } \ No newline at end of file diff --git a/src/config/config.php b/src/config/config.php index aef7655..4e9b513 100644 --- a/src/config/config.php +++ b/src/config/config.php @@ -5,9 +5,9 @@ |-------------------------------------------------------------------------- | | Execute the command below do publish the config file -| php artisan vendor:publish --provider="Ae3\LogsLayer\app\Providers\LogsLayerServiceProvider" --tag="config" +| php artisan vendor:publish --provider="Ae3\LaravelLogsLayer\app\Providers\LogsLayerServiceProvider" --tag="config" */ return [ - + 'sensitive_data' => env('LOGS_LAYER_SENSITIVE_DATA', 'password,password_confirmation,token,api_token,api_key,access_token'), ];