---
title: "DI a akcie — Sentinel for Laravel | Roundly"
description: "Bez fasády: injektujte SentinelManager alebo zavolajte jednu z 30 akcií — objekty požiadaviek, akcie s obyčajnými argumentmi a mapa metód na akcie."
url: https://roundly-consulting.com/sk/open-source/navody/sentinel-for-laravel/bez-fasady
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Sentinel for Laravel](https://roundly-consulting.com/sk/open-source/navody/sentinel-for-laravel.md)

# DI a akcie

Fasáda je odporúčaná voľba, nie jediná cesta. Rovnaký kód spúšťajú tri vstupy: fasáda Sentinel (najkratší zápis); manažér RoundlyConsulting\\Sentinel\\SentinelManager — koreň fasády, singleton v kontajneri s každou metódou fasády s rovnakou signatúrou — injektovaný cez konštruktor; a akcie v RoundlyConsulting\\Sentinel\\Actions\\…, triedy final readonly s jednou metódou execute().

## Injektovanie manažéra

```php
use RoundlyConsulting\Sentinel\SentinelManager;

final class FixInvoice
{
    public function __construct(private SentinelManager $sentinel) {}

    public function __invoke(Invoice $invoice, User $admin): void
    {
        $this->sentinel->for($invoice)->by($admin)->because('Ticket #412: corrected VAT via SQL')->acknowledge();
    }
}
```

## Volanie akcie

Dvadsaťjeden z 30 akcií pre aplikáciu berie jeden verejný objekt požiadavky alebo volieb — vytvárajte ho s pomenovanými argumentmi. Deväť berie obyčajné argumenty: CheckInstallationAction (žiadne), RetireKeyAction($ring, $keyId), VerifyMacAction($ring, $keyId, $message, $mac), ComputeMacAction($ring, $message), ForgetIdempotencyKeyAction($key, $scope), ReadLedgerHistoryAction($model, $seal, $limit), SignRequestAction($request, $keyId, SigningOptions $options), VerifyRequestSignatureAction($request, ?$profile) a VerifyResponseSignatureAction($response, ?$profile). Kým manažér doplní predvolenú pečať modelu sám, AcknowledgeRequest, UnsealRequest a ReadLedgerHistoryAction chcú názov pečate explicitne.

```php
use RoundlyConsulting\Sentinel\Actions\Keys\ImportKeyAction;
use RoundlyConsulting\Sentinel\Actions\Keys\RetireKeyAction;
use RoundlyConsulting\Sentinel\Actions\Seals\AcknowledgeTamperingAction;
use RoundlyConsulting\Sentinel\Actions\Seals\ReadLedgerHistoryAction;
use RoundlyConsulting\Sentinel\Actions\Seals\SealModelAction;
use RoundlyConsulting\Sentinel\DataTransferObjects\AcknowledgeRequest;
use RoundlyConsulting\Sentinel\DataTransferObjects\ImportKeyRequest;
use RoundlyConsulting\Sentinel\DataTransferObjects\SealRequest;
use RoundlyConsulting\Sentinel\Enums\Algorithm;

// The raw actions — a request object…
app(ImportKeyAction::class)->execute(new ImportKeyRequest('http', 'acme-2026-10', Algorithm::Ed25519, $pem, owner: $partner));
app(SealModelAction::class)->execute(new SealRequest($invoice, reason: 'INC-1'));   // null seal = the default one
app(AcknowledgeTamperingAction::class)->execute(new AcknowledgeRequest(
    model: $invoice, seal: 'financial', reason: 'Ticket #412: corrected VAT via SQL', actor: $admin,
));

// …or plain arguments
app(ReadLedgerHistoryAction::class)->execute($invoice, 'financial', 20);   // list<LedgerRecord>, limit 1–1000
app(RetireKeyAction::class)->execute('http', 'acme-2025-10');
```

## Metóda fasády → akcia

| Metóda fasády | Akcia (vstup) |
| --- | --- |
| `check()` | `CheckInstallationAction (no input)` |
| `seal()` | `Seals\SealModelAction (SealRequest)` |
| `verify()` | `Seals\VerifyModelAction (VerifyRequest)` |
| `verifyOrFail()` | `Seals\VerifyModelAction (VerifyRequest)` |
| `verifyAll()` | `Seals\VerifyModelsAction (VerifyManyRequest)` |
| `verifyMany()` | `Seals\VerifyModelsAction (VerifyManyRequest)` |
| `isIntact()` | `Seals\VerifyModelsAction (VerifyManyRequest)` |
| `acknowledge()` | `Seals\AcknowledgeTamperingAction (AcknowledgeRequest)` |
| `unseal()` | `Seals\UnsealModelAction (UnsealRequest)` |
| `ledgerHistory()` | `Seals\ReadLedgerHistoryAction ($model, $seal, $limit)` |
| `scan()` | `Seals\ScanSealsAction (ScanOptions)` |
| `reseal()` | `Seals\ResealModelsAction (ResealOptions)` |
| `resealWhere()` | `Seals\ResealWhereAction (ResealWhereRequest)` |
| `updateAndReseal()` | `Seals\UpdateAndResealAction (UpdateAndResealRequest)` |
| `sealMissing()` | `Seals\SealMissingAction (BaselineOptions)` |
| `generateKey()` | `Keys\GenerateKeyAction (GenerateKeyRequest)` |
| `importKey()` | `Keys\ImportKeyAction (ImportKeyRequest)` |
| `rotateKey()` | `Keys\RotateKeyAction (RotateKeyRequest)` |
| `revokeKey()` | `Keys\RevokeKeyAction (RevokeKeyRequest)` |
| `retireKey()` | `Keys\RetireKeyAction ($ring, $keyId)` |
| `verifyMac()` | `Keys\VerifyMacAction ($ring, $keyId, $message, $mac)` |
| `mac()` | `Keys\ComputeMacAction ($ring, $message)` |
| `checkpoint()` | `Ledger\CreateCheckpointAction (CheckpointOptions)` |
| `verifyLedger()` | `Ledger\VerifyLedgerAction (LedgerVerifyOptions)` |
| `runIdempotent()` | `Idempotency\RunIdempotentAction (IdempotentCall)` |
| `forgetIdempotencyKey()` | `Idempotency\ForgetIdempotencyKeyAction ($key, $scope)` |
| `issueNonce()` | `Nonces\IssueNonceAction (IssueNonceRequest)` |
| `consumeNonce()` | `Nonces\ConsumeNonceAction (ConsumeNonceRequest)` |
| `signedRoute()` | `Nonces\IssueSingleUseUrlAction (SignedRouteRequest)` |
| `prune()` | `PruneAction (PruneOptions)` |
| `signRequest()` | `Signatures\SignRequestAction ($request, $keyId, SigningOptions)` |
| `verifyRequestSignature()` | `Signatures\VerifyRequestSignatureAction ($request, $profile)` |
| `verifyResponseSignature()` | `Signatures\VerifyResponseSignatureAction ($response, $profile)` |

- Každá metóda manažéra, ktorá pečatí, overuje alebo mení stav, si akciu vezme z kontajnera pri každom volaní, takže naviazanie triedy akcie v kontajneri ju nahradí všade — vo fasáde, handloch, traite modelu aj príkazoch. Akcie sú final; náhrada musí ponúknuť rovnakú signatúru execute(), napríklad obal, ktorý loguje a deleguje na pôvodnú akciu.
- Handly, pod-prístupy, trait modelu, middleware, pravidlo, makrá aj middleware jobov volajú manažéra — nikdy priamo akciu — preto fake vidí každé volanie.
- Sentinel::fake() (len na fasáde) vymení manažéra vo fasáde aj v kontajneri, takže sa podvrhne aj injektovaný SentinelManager. Priame volanie akcie fake obchádza.
- Dátové objekty s tajomstvami (ImportKeyRequest, ConsumeNonceRequest, IssuedNonce, GeneratedKey, RotationResult) vypíšu vo var\_dump(), json\_encode() aj v kontexte logu \[redacted\] a všetky okrem ConsumeNonceRequest odmietnu serialize(). Od verzie 1.2 ploché volanie fasády skryje aj vo vlastnom rámci fasády argumenty, ktoré manažér označuje #\[\\SensitiveParameter\] ($mac pri verifyMac()), takže stack trace ich neukáže o nič viac než volanie cez manažéra.
- Metódy manažéra ako verifyIn(), persist(), retrieved(), beginIdempotentRequest() či rememberNonce() sú verejné len pre vnútorné zapojenie balíka a označené @internal — nevolajte ich. Aj ResealKeyEnvelopesAction (za príkazom sentinel:key:reseal) je @internal: raz aktualizuje vlastné úložisko kľúčov Sentinelu a rozhraním je príkaz — jeho zmyslom je, aby operátor prečítal labely, ktoré vypíše.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/sentinel-for-laravel.md)
