Každá výnimka dedí z abstraktnej TwoFactorException, takže môžete najprv ošetriť konkrétne prípady a nakoniec zachytiť celú rodinu:
use RoundlyConsulting\TwoFactor\Exceptions\InvalidTwoFactorCodeException;
use RoundlyConsulting\TwoFactor\Exceptions\TwoFactorException;
use RoundlyConsulting\TwoFactor\Exceptions\TwoFactorNotPendingException;
use RoundlyConsulting\TwoFactor\Facades\TwoFactor;
try {
TwoFactor::for($user)->confirm($request->string('code')->toString());
} catch (InvalidTwoFactorCodeException $e) {
// wrong code — ask again
} catch (TwoFactorNotPendingException $e) {
// nothing pending, or 2FA is already enabled
} catch (TwoFactorException $e) {
// any other package failure
}| Výnimka | Kedy nastane |
|---|---|
TwoFactorException | Abstraktná základná trieda (RuntimeException) — zachytí celú rodinu výnimiek. |
InvalidTwoFactorCodeException | confirm() dostane nesprávny kód. |
TwoFactorNotPendingException | Potvrdenie bez čakajúcej aktivácie — aj vtedy, keď je 2FA už zapnuté. |
TwoFactorAlreadyEnabledException | Spustenie aktivácie pre používateľa, ktorý už má 2FA zapnuté. |
TwoFactorRateLimitedException | Vstavaný limiter zablokoval overenie; nesie secondsUntilAvailable. |
InvalidTwoFactorConfigException | Neznáma hodnota algorithm, recovery_codes.storage alebo replay_guard; digits, period, window, secret_length, attempts.*, recovery_codes.count či cache.ttl mimo povoleného rozsahu alebo nie celé číslo — vrátane window zadaného priamo do verify() mimo 0–2 a cache.ttl nižšieho než (2 × window + 1) × period; attempts, ktoré nie je poľom ani null; issuer či cache store, ktoré nie sú reťazcom; alebo názov tabuľky či stĺpca, ktorý nie je reťazcom. |
InvalidBase32Exception | Tajný kľúč nie je platný base32 a nedá sa dekódovať. |
InvalidTwoFactorSecretException | Tajný kľúč sa dá dekódovať, no nie je použiteľný — je prázdny, kratší ako 10 bajtov alebo má len nulové bajty — v currentCode(), verify() či attempt(); provisioningUri() ju vyhodí pri prázdnom kľúči. |
TwoFactorAssertionFailedException | Zlyhala asercia TwoFactorFake. |
Výnimky samotného crypto-for-laravel sa nikdy nedostanú von: chyba dekódovania base32 sa zmení na InvalidBase32Exception a chyba parametra OTP na InvalidTwoFactorSecretException. Okno, počet číslic, perióda aj dĺžka kľúča sa ohraničia ešte predtým, ako sa dostanú ku crypto, takže jediný parameter, ktorý môže ešte odmietnuť, je tajný kľúč.
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.