Core
Audit Log
Wire Core obsahuje audit log pro záznam změn modelů a událostí spojených s tabulkami. Ukládá typ události, auditovaný záznam, uživatele, staré hodnoty, nové hodnoty, metadata a timestamp.
Na této stránce
Wire Core obsahuje audit log pro záznam změn modelů a událostí spojených s tabulkami. Ukládá typ události, auditovaný záznam, uživatele, staré hodnoty, nové hodnoty, metadata a timestamp.
Instalace
Audit log je součástí wire-core. Pokud jste nainstalovali wire-table nebo wire-forms, core je už nainstalován.
Publikujte config a migraci:
php artisan vendor:publish --tag=wire-core::configphp artisan vendor:publish --tag=wire-core::migrationsphp artisan migrate
To je celé nastavení — balíček registruje audit event subscriber
automaticky a logger je řízen wire-core.audit.enabled (ve výchozím stavu
zapnuto). Pokud jste AuditEventSubscriber registrovali ručně v aplikačním
service provideru (setup před 1.7.1), můžete ten řádek odstranit;
subscription je idempotentní, takže jeho ponechání nezpůsobí dvojité logování.
Zapnutí auditu na modelu
Přidejte HasAuditable na jakýkoli Eloquent model, který chcete sledovat.
use Illuminate\Database\Eloquent\Model;use NyonCode\WireCore\Audit\Concerns\HasAuditable; class Order extends Model{ use HasAuditable;}
Trait zaznamenává Eloquent události created, updated a deleted.
Vyloučení nebo zahrnutí sloupců
Použijte getAuditExclude() pro skrytí šumivých nebo citlivých sloupců pro jeden model.
class Order extends Model{ use HasAuditable; protected function getAuditExclude(): array { return ['cached_total', 'internal_token']; }}
Použijte getAuditInclude(), když chcete whitelist.
protected function getAuditInclude(): array{ return ['status', 'total', 'assigned_user_id'];}
Globální vyloučení žijí v config/wire-core.php:
'audit' => [ 'exclude_columns' => [ 'password', 'remember_token', ],],
Zobrazení audit záznamů
Každý auditovatelný model dostane relaci audits().
$entries = $order->audits()->latest()->get();
Audit záznamy vystavují helpery pro běžné dotazy:
use NyonCode\WireCore\Audit\AuditEntry; AuditEntry::forRecord($order)->get();AuditEntry::forEvent('updated')->get();AuditEntry::byUser($user->id)->get();AuditEntry::olderThan(90)->delete();
Pro zobrazení řádkového audit trailu ve Wire Table přidejte vestavěnou akci:
use NyonCode\WireCore\Audit\Actions\AuditTrailAction; return $table ->model(Order::class) ->actions([ AuditTrailAction::make(), ]);
Akce otevře slide-over s historií záznamu.
Manuální audit události
Audit události můžete odesílat ručně pro operace, které neprocházejí auditovanou událostí modelu.
use NyonCode\WireCore\Audit\Events\BulkActionExecuted; event(new BulkActionExecuted( actionName: 'archive', modelType: Order::class, recordIds: $orders->modelKeys(), success: true, metadata: ['source' => 'orders-table'],));
Pro aktualizaci jedné buňky:
use NyonCode\WireCore\Audit\Events\InlineCellUpdated; event(new InlineCellUpdated( modelType: Order::class, recordId: $order->id, column: 'status', oldValue: 'draft', newValue: 'approved',));
Dočasné vypnutí
Vypněte audit logging během importů, seederů nebo údržbových jobů:
use NyonCode\WireCore\Audit\AuditLogger; AuditLogger::withoutAuditing(function () { Order::query()->update(['synced_at' => now()]);});
Retence
Nastavte retenční období ve dnech:
'audit' => [ 'retention_days' => 180,],
Pak naplánujte přibalený prune příkaz:
use Illuminate\Support\Facades\Schedule; Schedule::command('wire-core:audit-prune')->daily();
Spusťte ho manuálně s ad-hoc přepisem období:
php artisan wire-core:audit-prune --days=90
Bez nakonfigurovaného retention_days (a bez --days) příkaz varuje a
neprořeže nic. Programové prořezávání je stále dostupné přes
app(AuditLogger::class)->prune(?int $days = null).
Konfigurace
| Klíč | Výchozí | Popis |
|---|---|---|
enabled |
true |
Globální on/off přepínač |
model |
AuditEntry::class |
Vlastní model audit záznamu |
user_model |
App\Models\User |
Model uživatele pro relaci user() |
events |
null |
null loguje všechny podporované události; pole loguje jen vybrané typy událostí |
exclude_columns |
password, remember_token |
Globální vyloučení sloupců |
retention_days |
null |
Počet dní, po které se záznamy uchovávají |
Podporované typy událostí jsou created, updated, deleted, bulk_action a cell_updated.
Kompletní referenci configu viz Konfigurace.