diff --git a/database/migrations/create_api_logs_table.php.stub b/database/migrations/create_api_logs_table.php.stub index 5778354..1996544 100644 --- a/database/migrations/create_api_logs_table.php.stub +++ b/database/migrations/create_api_logs_table.php.stub @@ -22,7 +22,7 @@ class CreateApiLogsTable extends Migration $table->json('request_data'); $table->json('request_headers'); $table->json('response_data'); - $table->foreignId('user_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate(); + $table->morphs('causer', 'causer'); $table->timestamps(); }); } diff --git a/src/Http/Middleware/LogApiRequest.php b/src/Http/Middleware/LogApiRequest.php index 995600e..b228d77 100644 --- a/src/Http/Middleware/LogApiRequest.php +++ b/src/Http/Middleware/LogApiRequest.php @@ -3,7 +3,6 @@ namespace CodeTech\ApiLogs\Http\Middleware; use Closure; -use CodeTech\ApiLogs\Models\ApiLog; use Illuminate\Http\Request; class LogApiRequest @@ -33,7 +32,7 @@ public function terminate(Request $request, $response): void { $request->end = microtime(true); - $data = [ + auth()->user()->apiLogs()->create([ 'duration' => $request->end - $request->start, 'url' => $request->fullUrl(), 'method' => $request->getMethod(), @@ -41,9 +40,6 @@ public function terminate(Request $request, $response): void 'request_data' => $request->all(), 'request_headers' => $request->headers->all(), 'response_data' => json_decode($response->getContent()), - 'user_id' => auth()->id(), - ]; - - ApiLog::create($data); + ]); } } diff --git a/src/Models/ApiLog.php b/src/Models/ApiLog.php index db944a1..1246ef5 100644 --- a/src/Models/ApiLog.php +++ b/src/Models/ApiLog.php @@ -2,7 +2,6 @@ namespace CodeTech\ApiLogs\Models; -use App\Models\User; use Illuminate\Database\Eloquent\Model; class ApiLog extends Model @@ -18,7 +17,6 @@ class ApiLog extends Model 'request_data', 'request_headers', 'response_data', - 'user_id', ]; /** @@ -32,13 +30,9 @@ class ApiLog extends Model 'updated_at' => 'datetime:d/m/Y H:i', ]; - /** - * Get the user that owns this session log. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user() + + public function causer() { - return $this->belongsTo(User::class); + return $this->morphTo(); } } diff --git a/src/Traits/HasApiLogs.php b/src/Traits/HasApiLogs.php new file mode 100644 index 0000000..12e8971 --- /dev/null +++ b/src/Traits/HasApiLogs.php @@ -0,0 +1,14 @@ +morphMany(ApiLog::class, 'causer'); + } +}