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:
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 stateMetó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 kryptomienOdoslaní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.