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,39 @@
<?php
namespace App\Console\Commands;
use App\Models\AuditLog;
use Illuminate\Console\Command;
/**
* Удаление устаревших записей журнала по сроку хранения (мера РСБ.4, РСБ.8).
*
* Срок хранения задаётся AUDIT_RETENTION_DAYS (для УЗ-1 не менее 3 лет).
* Перед удалением записи должны быть выгружены в архив/SIEM.
*/
class AuditPurgeCommand extends Command
{
protected $signature = 'audit:purge {--dry-run : Показать количество без удаления}';
protected $description = 'Удалить записи журнала аудита старше срока хранения';
public function handle(): int
{
$days = (int) config('audit.retention_days');
$threshold = now()->subDays($days);
$query = AuditLog::query()->where('created_at', '<', $threshold);
$count = $query->count();
if ($this->option('dry-run')) {
$this->info("К удалению (старше {$days} дн.): {$count} записей.");
return self::SUCCESS;
}
$query->delete();
$this->info("Удалено записей журнала: {$count}.");
return self::SUCCESS;
}
}