---
title: "DI a akcie — Passkeys for Laravel | Roundly"
description: "Injektujte PasskeyService a získate rovnaké API bez statických volaní, alebo z dôveryhodného kódu spustite jednoúčelovú akciu ceremónie."
url: https://roundly-consulting.com/sk/open-source/navody/passkeys-for-laravel/bez-fasady
language: sk
---

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

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

# DI a akcie

K dispozícii sú tri rovnocenné vstupné body a výber je na vás:

- Fasáda Passkeys — najkratší zápis a odporúčaná voľba.
- Služba injektovaná cez konštruktor — rovnaké API ako explicitná závislosť, bez statických volaní. Uveďte typ kontraktu RoundlyConsulting\\Passkeys\\Contracts\\PasskeyService: je koreňom fasády a je naviazaný na RoundlyConsulting\\Passkeys\\PasskeyManager. Manažér je v kontajneri naviazaný len cez kontrakt, nie ako samostatný singleton — injektujte kontrakt, nie triedu.
- Akcie — jednoúčelové triedy s metódou execute(), ktoré zapojíte do vlastných akcií, jobov a príkazov.

## Injektovanie služby

Passkeys::fake() vymení väzbu PasskeyService, takže náhradu vidí aj kód so závislosťou v konštruktore:

```php
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use RoundlyConsulting\Passkeys\Contracts\PasskeyService;

final readonly class RevokePasskeyController
{
    public function __construct(private PasskeyService $passkeys) {}

    public function __invoke(Request $request, int $passkey): Response
    {
        $this->passkeys->for($request->user())->revoke($passkey);

        return response()->noContent();
    }
}
```

## Spustenie akcie

Každé volanie fasády zodpovedá jednej akcii, ktorá sa získa z kontajnera:

| Volanie fasády | Akcia |
| --- | --- |
| `for($user)->registrationOptions($o)` | `GenerateRegistrationOptionsAction::execute($user, $o)` |
| `for($user)->register($r, $name)` | `VerifyRegistrationAction::execute($user, $r, $name)` |
| `for($user)->authenticationOptions($o) / authenticationOptions($o)` | `GenerateAuthenticationOptionsAction::execute(?$user, $o)` |
| `for($user)->authenticate($r) / authenticate($r, $expect)` | `VerifyAuthenticationAction::execute($r, ?$expect)` |
| `for($user)->rename($p, $name)` | `RenamePasskeyAction::execute($passkey, $name)` |
| `for($user)->revoke($p)` | `RevokePasskeyAction::execute($passkey)` |

```php
use RoundlyConsulting\Passkeys\Actions\GenerateRegistrationOptionsAction;
use RoundlyConsulting\Passkeys\Actions\RevokePasskeyAction;
use RoundlyConsulting\Passkeys\Actions\VerifyRegistrationAction;
use RoundlyConsulting\Passkeys\Models\Passkey;

// The same two registration calls, one action each:
$options = app(GenerateRegistrationOptionsAction::class)->execute($user, $overrides);
$passkey = app(VerifyRegistrationAction::class)->execute($user, $response, 'MacBook Touch ID');

// Trusted code that already scoped its query — the action itself checks no ownership:
Passkey::query()
    ->ownedBy($user)
    ->where('last_used_at', '<', now()->subYear())
    ->each(fn (Passkey $passkey) => app(RevokePasskeyAction::class)->execute($passkey));
```

RenamePasskeyAction a RevokePasskeyAction prijímajú už načítaný Passkey a vlastníctvo nekontrolujú — to robí handle účtu. Priamo ich volajte len z dôveryhodného kódu, napríklad z administrátorského nástroja alebo jobu, ktorý už svoj dopyt obmedzil.

## 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/passkeys-for-laravel.md)
