first commit

This commit is contained in:
brusnitsyn
2026-06-24 17:20:43 +09:00
commit 43499acf1c
165 changed files with 25929 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Middleware;
use App\Facades\Audit;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Журналирование обращений к защищаемым маршрутам (мера РСБ.2).
*
* Назначается группе маршрутов, работающих с ПДн / API. Фиксирует факт
* изменяющего обращения (POST/PUT/PATCH/DELETE) и результат по HTTP-коду.
* Точечный аудит конкретных операций выполняется через App\Facades\Audit
* в контроллерах и Observer'ах моделей.
*/
class AuditLog
{
/** HTTP-методы, изменяющие состояние и подлежащие регистрации. */
private const MUTATING = ['POST', 'PUT', 'PATCH', 'DELETE'];
public function handle(Request $request, Closure $next): Response
{
$response = $next($request);
if (in_array($request->method(), self::MUTATING, true)) {
$status = $response->getStatusCode();
Audit::log(
eventType: 'http.request',
action: $request->method().' '.$request->path(),
resource: $request->route()?->getName() ?? $request->path(),
result: $status < 400 ? 'success' : 'failure',
details: ['status' => $status],
);
}
return $response;
}
}