---
title: "DI a akcie — Two-Factor for Laravel | Roundly"
description: "Namiesto fasády si vložte kontrakt TwoFactorService alebo spustite jednu akciu — ten istý kód a fake platí aj tu."
url: https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel/bez-fasady
language: sk
---

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

[Two-Factor for Laravel](https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel.md)

# DI a akcie

Tri vstupné body spúšťajú presne ten istý kód, vyberte si preto ten, ktorý sa na dané miesto hodí:

- Fasáda TwoFactor — najkratší zápis a odporúčaná predvoľba.
- Manažér vložený cez konštruktor — rovnaké API s explicitnou závislosťou a bez statických volaní. Koreňom fasády je kontrakt RoundlyConsulting\\TwoFactor\\Contracts\\TwoFactorService, ktorý implementuje RoundlyConsulting\\TwoFactor\\TwoFactorManager.
- Akcie — jednoúčelové triedy s jedinou metódou execute(), ktoré zapojíte do vlastných akcií, jobov a príkazov.

## Vloženie služby

Typujte kontrakt, nie TwoFactorManager: manažér v kontajneri zámerne nemá alias, pretože kontrakt implementuje aj fake. TwoFactor::fake() nahradí aj túto väzbu, takže fake uvidí aj vložený kód:

```php
use RoundlyConsulting\TwoFactor\Contracts\TwoFactorService;

final readonly class ChallengeController
{
    public function __construct(private TwoFactorService $twoFactor) {}

    public function __invoke(Request $request): Response
    {
        $result = $this->twoFactor->for($request->user())->attempt($request->string('code')->toString());
        // ...
    }
}
```

## Spustenie akcie

Každý zápis cez handle je jedna akcia v RoundlyConsulting\\TwoFactor\\Actions — vyžiadajte si ju z kontajnera a zavolajte execute():

```php
use RoundlyConsulting\TwoFactor\Actions\DisableTwoFactor;
use RoundlyConsulting\TwoFactor\Actions\StartEnrolment;

$setup = app(StartEnrolment::class)->execute($user, issuer: 'Acme');

app(DisableTwoFactor::class)->execute($user); // clears all 2FA state
```

## Metóda fasády → akcia

| Metóda handle | Akcia | Správanie |
| --- | --- | --- |
| `for($user)->start($label, $issuer)` | `StartEnrolment::execute($user, $label, $issuer)` | Nový tajný kľúč a záložné kódy, vynulované confirmed\_at, udalosť TwoFactorEnrolmentStarted; vráti TwoFactorSetup. Ak je 2FA už zapnuté, vyhodí TwoFactorAlreadyEnabledException. |
| `for($user)->confirm($code)` | `ConfirmEnrolment::execute($user, $code)` | Nastaví confirmed\_at, zaberie potvrdzujúci časový krok, vyvolá TwoFactorConfirmed. Vyhodí TwoFactorNotPendingException alebo InvalidTwoFactorCodeException. |
| `for($user)->attempt($code)` | `AttemptTwoFactorCode::execute($user, $code)` | Overenie pri prihlásení — limiter, TOTP s replay guardom, potom záložný kód; vráti VerificationResult. |
| `for($user)->recoveryCodes()->regenerate()` | `RegenerateRecoveryCodes::execute($user)` | Nahradí sadu kódov, vyvolá RecoveryCodesRegenerated a vráti nové kódy v čitateľnej podobe. |
| `for($user)->disable()` | `DisableTwoFactor::execute($user)` | Nastaví všetky dvojfaktorové stĺpce na null a vyvolá TwoFactorDisabled. |

status() a recoveryCodes()->remaining() sú obyčajné čítania bez akcie. Akcie si TOTP primitíva berú z TwoFactorService, takže pod TwoFactor::fake() bežia na pripravenom tajnom kľúči, kódoch a programovateľnom verify() fake. Pomocná trieda na ukladanie záložných kódov, Support\\RecoveryCodeManager, je @internal — stavebný kameň akcií, nie pre hostiteľskú aplikáciu.

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