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

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:

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():

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 handleAkciaSprá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

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.