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

Fasáda TwoFactor

RoundlyConsulting\TwoFactor\Facades\TwoFactor — automaticky dostupná ako alias TwoFactor — je odporúčaný spôsob práce s balíkom. Všetko, čo číta alebo mení 2FA jedného používateľa, ide cez TwoFactor::for($user); bezstavové TOTP primitíva zostávajú priamo na fasáde.

Handle pre používateľa

use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

$twoFactor = TwoFactor::for($user);

$setup  = $twoFactor->start(issuer: 'Acme');            // TwoFactorSetup — begin (or restart) enrolment
$twoFactor->confirm($code);                             // first authenticator code switches 2FA on
$result = $twoFactor->attempt($code);                   // VerificationResult — the login challenge
$status = $twoFactor->status();                         // TwoFactorStatus
$codes  = $twoFactor->recoveryCodes()->regenerate();    // list<string> — show once
$left   = $twoFactor->recoveryCodes()->remaining();     // int
$twoFactor->disable();                                  // clears every 2FA column
TwoFactor::for($user)->…VraciaÚčel
start(?string $label = null, ?string $issuer = null)TwoFactorSetupSpustí (alebo reštartuje) čakajúcu aktiváciu. Vyhodí TwoFactorAlreadyEnabledException.
confirm(string $code)voidPotvrdí čakajúcu aktiváciu prvým kódom. Vyhodí TwoFactorNotPendingException alebo InvalidTwoFactorCodeException.
attempt(string $code)VerificationResultOverenie pri prihlásení — limiter, replay guard, záložné kódy. Vyhodí TwoFactorRateLimitedException.
status()TwoFactorStatusZapnuté, čakajúce, počet záložných kódov a čas potvrdenia jedným čítaním.
recoveryCodes()->regenerate()list<string>Nahradí záložné kódy a raz vráti novú sadu v čitateľnej podobe.
recoveryCodes()->remaining()intKoľko jednorazových záložných kódov zostáva.
disable()voidVymaže všetky dvojfaktorové stĺpce.

Každý zápis cez handle si svoju akciu vyžiada z kontajnera, takže platia vaše vlastné náhrady akcií aj TwoFactor::fake(). Záložné kódy sú dostupné cez pod-prístup recoveryCodes().

Zistenie stavu

status() vráti TwoFactorStatus s celým stavom naraz — praktické pre obrazovku nastavení:

$status = TwoFactor::for($user)->status();

$status->enabled;                // bool — a confirmed second factor
$status->pending;                // bool — enrolment started, waiting for its first code
$status->recoveryCodesRemaining; // int
$status->confirmedAt;            // ?CarbonImmutable — null unless enabled
VlastnosťTypVýznam
enabledboolPotvrdený druhý faktor — tajný kľúč je nastavený a potvrdený.
pendingboolAktivácia spustená, čaká sa na prvý kód.
recoveryCodesRemainingintPočet zostávajúcich jednorazových záložných kódov.
confirmedAt?CarbonImmutableKedy bola aktuálna aktivácia potvrdená; null, ak 2FA nie je zapnuté.

TOTP primitíva

use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

$secret = TwoFactor::generateSecret();                          // base32
$code   = TwoFactor::currentCode($secret);                      // current 6-digit code
$step   = TwoFactor::verify($secret, $code);                    // int timestep | false
$uri    = TwoFactor::provisioningUri($secret, '[email protected]');  // otpauth:// URI
$codes  = TwoFactor::generateRecoveryCodes();                   // list<string>
MetódaVraciaÚčel
for($user)UserTwoFactorHandle pre jedného používateľa — všetko, čo číta alebo mení jeho 2FA (ďalšia tabuľka).
generateSecret(?int $length = null)stringBase32 tajný kľúč z CSPRNG; dĺžka predvolene podľa secret_length.
currentCode(string $secret, ?int $timestamp = null)stringAktuálny TOTP kód, prípadne kód pre zadaný Unix timestamp.
verify(string $secret, string $code, ?int $window = null)int|falseČistá kontrola podľa RFC 6238 v rámci tolerancie: zhodný časový krok alebo false. Bez replay guardu, záložných kódov a limitera.
provisioningUri(string $secret, string $label, ?string $issuer = null)stringURI otpauth:// pre tajný kľúč a označenie účtu.
generateRecoveryCodes(?int $count = null)list<string>Nové kódy v čitateľnej podobe, neukladajú sa; počet predvolene podľa recovery_codes.count.
fake()TwoFactorFakeNahradí službu zaznamenávajúcim testovacím dvojníkom — pozrite Testovanie.

verify() je čistá kontrola podľa RFC 6238: porovná kód s tajným kľúčom v rámci tolerancie posunu a vráti časový krok, no nič nezaberá, záložné kódy neskúša a limiter nepoužíva. Na overenie pri prihlásení použite TwoFactor::for($user)->attempt().

Každý parameter s tajným kľúčom či kódom je označený #[SensitiveParameter] a overovanie prejde celé okno bez predčasného ukončenia, takže beží v konštantnom čase. Poškodený tajný kľúč vyhodí InvalidBase32Exception; explicitne zadaná dĺžka či okno mimo rozsahu InvalidTwoFactorConfigException.

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.