NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Všetky udalosti žijú v RoundlyConsulting\Sentinel\Events a nesú len skalárne hodnoty — typy, id, názvy pečatí, stavy, názvy atribútov, id kľúčov — nikdy hodnoty, materiál kľúčov ani telá požiadaviek, takže sú bezpečné pre listenery vo fronte aj pre logy. Udalosti viazané na zápis sa odosielajú po commite, ostatné synchrónne. Sentinel::fake() neodošle žiadnu.

UdalosťKedyObsah
ModelSealedpo commitetyp/id modelu, pečať, verzia, id kľúča, SealEvent, aktér
TamperDetectedsynchrónnetyp/id modelu, pečať, VerificationStatus, dôvod, zmenené atribúty, kontext, id kľúča
TamperAcknowledgedpo commitetyp/id modelu, pečať, verzia, predošlý stav, zmenené atribúty, dôvod, aktér
SealRemovedpo commitetyp/id modelu, pečať, deleted/unsealed, predošlý stav
SealingSuspendedsynchrónnedôvod, aktér
KeyGenerated, KeyRotated, KeyRevoked, KeyRetiredpo commitekruh, id kľúča, algoritmus (+ id predošlého kľúča / dôvod a aktér)
KeyImportedpo commitekruh, id kľúča, algoritmus, či podpisuje, aktér
KeyIntegrityViolatedsynchrónnekruh, id kľúča, driver
LedgerCheckpointedpo commitepripojenie, seq, záznamy, root
LedgerIntegrityViolatedsynchrónnepripojenie, LedgerFinding zistenia
AnchorPublishFailedsynchrónnekotva, pripojenie, seq, chyba
IdempotentRequestReplayed, IdempotencyRejectedsynchrónnemetóda, routa, status (+ IdempotencyRejection)
HttpSignatureRejectedsynchrónneSignatureRejection, id kľúča, metóda, cesta

Pomocníci

MetódaNaVracia
model(): ?ModelModelSealed, TamperDetected, TamperAcknowledged, SealRemovedModel, s ohľadom na morph map, načítaný s pozastaveným overovaním pri načítaní, vrátane soft-deleted riadkov; po tvrdom zmazaní null.
changedColumns(): list<string>TamperDetected, TamperAcknowledgedZmenené stĺpce bez prefixu a: — ['amount']; prázdne, ak sú neznáme.
changedComputed(): list<string>TamperDetected, TamperAcknowledgedZmenené vypočítané polia bez prefixu c: — ['lines'].
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Sentinel\Events\LedgerIntegrityViolated;
use RoundlyConsulting\Sentinel\Events\TamperDetected;

Event::listen(function (TamperDetected $event): void {
    if ($event->context->value !== 'retrieve') {
        Notification::route('slack', config('services.slack.security'))
            ->notify(new DataTamperingAlert($event->sealableType, $event->sealableId, $event->seal, $event->status));
    }

    $invoice = $event->model();             // loads even the tampered row
    $columns = $event->changedColumns();    // ['amount']
});

Event::listen(fn (LedgerIntegrityViolated $event) => report(new RuntimeException(
    "Ledger integrity violated on {$event->connection}: ".count($event->findings).' finding(s)',
)));

Každé zistenie sa navyše zaloguje na úrovni warning do verification.log_channel (len názvy), takže upozornenie z logu funguje aj bez listenera.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.