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

Výnimky, stavy a enumy

Každá výnimka dedí z RoundlyConsulting\Sentinel\Exceptions\SentinelException (RuntimeException), okrem HTTP výnimiek, ktoré dedia zo Symfony HttpException a vykreslia problem details podľa RFC 9457. Správy sú anglické, určené vývojárom (HTTP správy sú preložené), a nikdy neobsahujú materiál kľúčov ani zapečatené hodnoty.

VýnimkaKedy
InvalidSealDefinitionExceptionDefinícia pečate sa neskompiluje — problems() vypíše všetky problémy.
SealingMisconfiguredExceptionChyby zapojenia, fail closed: notSealable, unknownSeal (vypíše deklarované pečate), unknownRing, notAMacRing (volanie MAC na kruhu, ktorý používajú pečate, denník alebo podpisy HTTP), saveOverridden, writeOutsideSealedPath, keyChanged (uloženie, ktoré mení primárny kľúč zapečateného riadku), middlewareParameter, bindingsNotSubstituted, queryModelMismatch, missingColumn, unknownModel, invalidColumn, middlewareOption, whereNeedsOneModel.
CanonicalizationExceptionHodnota sa nedá kanonizovať — field() a reason() pomenujú pole a pravidlo, nikdy nie hodnotu.
NoSigningKeyExceptionV kruhu nie je aktívny kľúč so súkromným materiálom; správa uvedie premenné kľúča kruhu a v testoch odkáže na WithSentinelKeys alebo Sentinel::fake().
UnknownKeyExceptionKid neznámy v danom kruhu (aj kid iného kruhu).
MacVerificationExceptionverifyMac() odmietol MAC — reason() vráti MacRejection, ring() a keyId() kruh a kid tak, ako boli zadané (kid pred zobrazením escapujte); nikdy neobsahuje MAC, správu ani materiál kľúča.
KeyIntegrityExceptionRiadok kľúča v databáze nesúhlasí so svojou obálkou.
InvalidKeyMaterialExceptionMateriál kľúča odmietnutý (kódovanie, dĺžka, slabé tajomstvo, nesúlad krivky, súkromný materiál pri importe len na overovanie, …).
AlgorithmNotAllowedExceptionAlgoritmus mimo allowlistu — notHmac, keď mac() narazí na podpisový kľúč Ed25519 či ECDSA.
KeyDriverExceptionOdmietnutia v životnom cykle kľúča: readOnly, customDriver (rotácia kruhu, ktorý podpisuje kľúčom vlastného drivera), ringBusy (MySQL/MariaDB: iná rotácia kruhu držala zámok dlhšie než innodb_lock_wait_timeout), notStoredInDatabase, keyIdTaken, reasonRequired, invalidKeyId, invalidLabel.
ConcurrentSealExceptionPrehraný súbeh (zápis sa vráti).
SealingFailedExceptionPečatenie alebo overenie neuloženého modelu (notPersisted — seal(), verify(), verifyAll(), isIntact()) / riadok zmizol počas pečatenia.
TamperedModelExceptionverifyOrFail(), zamietnutý zápis, zamietnutá hromadná aktualizácia — result() / results().
SealingSuspensionNotAllowedExceptionwithoutSealing() pri vypnutom allow_suspension.
AcknowledgementDeniedExceptionPotvrdenie / odpečatenie / baseline zamietnuté: reason, reasonTooLong, actorRequired, unauthorized.
LedgerIsAppendOnlyExceptionEloquent update či delete záznamu denníka alebo kontrolného bodu.
LedgerIntegrityExceptionLedgerReport::throwIfViolated() — findings() vráti porušenia.
AnchorPublishExceptionKotva odmietla kontrolný bod (diverged — drží taký, s ktorým databáza už nesúhlasí) alebo jej úložisko ohlásilo neúspešný zápis (notWritten); beh kontrolného bodu ju zachytí a nahlási AnchorPublishFailed.
InvalidSentinelConfigurationExceptionNeplatná konfigurácia; vyhodí sa pri prvom použití a nikdy ju nenahradí predvolená hodnota — správa uvedie kľúč (pri booleane aj zadanú hodnotu).
InvalidPurposeExceptionÚčel nonce mimo povolenej abecedy.
IdempotentResultExceptionidempotency()->run() vrátilo niečo, čo sa nedá uložiť ako JSON — callback prebehol, kľúč sa dokončí ako neprehrateľný.

HTTP výnimky

VýnimkaStatuscode
Http\Exceptions\SealVerificationFailedHttpExceptionmiddleware.verified_status (409)— (všeobecná správa)
IdempotencyKeyMissingException400idempotency_key_missing
InvalidIdempotencyKeyException400invalid_idempotency_key
IdempotencyKeyReusedException422idempotency_key_reused
IdempotencyRequestInProgressException409 + Retry-Afteridempotency_request_in_progress
IdempotentResponseUnavailableException409idempotent_response_unavailable
NonceRejectedException403nonce_rejected
HttpSignatureException401 (+ Accept-Signature)signature_rejected

Telá problémov nesú type (ak je nakonfigurovaný), title, status, detail a code s Content-Type: application/problem+json; type je problems.type_base#code a title aj detail sú preložené. Rodina idempotencie zdieľa abstraktnú IdempotencyException — rejection() vráti IdempotencyRejection, retryAfterSeconds() hodnotu Retry-After — a HttpSignatureException má reason() a keyId().

Stavy overenia

Hodnoty VerificationStatus sú zmrazené; názvy prípadov sú tvary hodnôt v StudlyCase. isIntact() a isFailure() uplatňujú to isté pravidlo ako VerificationResult::isIntact() a preložené názvy sú v sentinel::statuses:

PrípadHodnotaNeporušený?
Intactintactáno
Outdatedoutdatedáno, pokiaľ nie je vypnuté verification.outdated_is_intact
Unsealedunsealedáno (benevolentné pečate)
Tamperedtamperednie
Missingmissingnie
Stalestalenie
UnknownKeyunknown_keynie
RevokedKeyrevoked_keynie
RetiredKeyretired_keynie
AlgorithmNotAllowedalgorithm_not_allowednie
AlgorithmMismatchalgorithm_mismatchnie
Malformedmalformednie
Unverifiableunverifiablenie

Dôvody: mac, computed, canonicalization, ledger_entry (tampered); seal_deleted, never_sealed, unsealed (missing); newer_version, not_in_ledger, ledger_mismatch, entity_recreated (stale); ring_not_accepted, not_found, pending, integrity (unknown key); missing_attribute, missing_computed, error (unverifiable).

Enumy

Všetky žijú v RoundlyConsulting\Sentinel\Enums, sú zmrazené a používajú pomocníkov enums-for-laravel (values(), names(), labels(), options(), fromName(), tryFromName(), label(), is(), isIn(), …). Zmena hodnoty je hlavné vydanie:

EnumPrípadyPomocníci
AlgorithmHmacSha256, HmacSha384, HmacSha512, Ed25519, EcdsaP256Sha256, EcdsaP384Sha384isHmac(), isAsymmetric(), isHttpRegistered(), hashName(), hashLength(), hashAlgorithm(), cryptoAlgorithm()
KeyStatusPending, Active, VerifyOnly, Retired, RevokedcanSign(), canVerify()
KeyDestinationConfig, Database—
SealEventSealed, Resealed, Acknowledged, Baseline, Rotated, Deleted, UnsealedisTombstone()
VerificationContextApi, Middleware, Retrieve, Command, Rule, Collection, Write—
ReactionThrow, Report—
TamperedWritePolicyRefuse, Reseal, Skip—
LedgerFindingKindCheckpointGap, CheckpointInvalid, CheckpointMismatch, ChainBroken, AnchorAhead, AnchorMismatch, AnchorInvalid, AnchorUnreachable, EntryInvalid, OrphanEntry, EntityDeleted, SealRolledBack, SealMissing, BacklogisViolation()
IdempotencyRejectionMissing, Invalid, Reused, InProgress, Unavailablestatus()
IdempotencyOutcomeProceed, Replay, InProgress, Reused, Unavailable—
SignatureRejectionMissing, Malformed, Ambiguous, MissingParameter, MissingComponent, UnsupportedComponent, UnsupportedAlgorithm, UnknownKey, RevokedKey, AlgorithmMismatch, AlgorithmNotAllowed, TagMismatch, NotYetValid, TooOld, Expired, DigestMismatch, UnsupportedDigest, InvalidSignature, Replayed—
MacRejectionUnknownKey, PendingKey, RetiredKey, RevokedKey, UnsupportedAlgorithm, AlgorithmNotAllowed, Malformed, Mismatch—
DigestAlgorithmSha256, Sha512hashAlgorithm()
HealthStatusOk, Warning, Failure—
NonceKindIssued, Seen—
PersistOperationSave, Delete, Increment—
TypeKindAuto, String, Integer, Decimal, Float, Boolean, DateTime, Date, Json, Binary, Null, PlaintexthasScale(), isDeclarable()

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.