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

Aktivácia má dva kroky: spustenie čakajúcej aktivácie a jej potvrdenie prvým kódom z autentifikačnej aplikácie používateľa. Kým nie je potvrdená, nič sa nepovažuje za druhý faktor.

Spustenie

use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

$setup = TwoFactor::for($user)->start();

$setup->secret;          // base32 secret (store is handled for you)
$setup->provisioningUri; // otpauth://totp/Acme:[email protected]?secret=...&issuer=Acme&...
$setup->recoveryCodes;   // list<string> — show these once, they are the only plaintext copy
$setup->issuer;          // the issuer the URI carries — show it next to the QR
VlastnosťTypObsah
secretstringBase32 tajný kľúč — už uložený a zašifrovaný.
provisioningUristringURI otpauth://, ktoré vykreslíte ako QR kód.
recoveryCodeslist<string>Záložné kódy v čitateľnej podobe — jediná kópia, zobrazte ich raz.
issuerstringVydavateľ uvedený v URI — zobrazte ho vedľa QR kódu.

start() vygeneruje nový tajný kľúč a záložné kódy, uloží ich s vynulovaným confirmed_at a vyvolá TwoFactorEnrolmentStarted. Opätovné spustenie počas čakajúcej aktivácie ju reštartuje s novým kľúčom aj kódmi; spustenie pri už zapnutom 2FA vyhodí TwoFactorAlreadyEnabledException.

Vydavateľ pre každý guard či tenanta

Vydavateľ je predvolene two-factor.issuer, inak app.name — prázdna hodnota na ktorejkoľvek úrovni sa považuje za nenastavenú. Pri každom volaní ho môžete určiť argumentom issuer — jeden názov pre každý guard či tenanta — a rovnako prepísať aj označenie účtu; URI a $setup->issuer sa vždy zhodujú:

$setup = TwoFactor::for($client)->start(label: '[email protected]', issuer: 'Acme Partner Portal');

Potvrdenie

Používateľ naskenuje QR kód a odošle prvý kód, čím aktiváciu dokončí:

TwoFactor::for($user)->confirm($request->string('code')->toString());
// throws InvalidTwoFactorCodeException on a wrong code,
// TwoFactorNotPendingException if there is no pending enrolment — including when 2FA is
// already enabled: a confirm is never a silent no-op, so a clean return always means this
// code just switched 2FA on.

Úspešné potvrdenie nastaví confirmed_at, vyvolá TwoFactorConfirmed a v replay guarde zaberie potvrdzujúci časový krok, takže kód použitý na potvrdenie nemôže poslúžiť aj ako prvý prihlasovací kód.

Priamo z modelu používateľa

Rovnaký postup je k dispozícii aj ako metódy traitu, s voliteľným označením účtu a vydavateľom. Delegujú na TwoFactor::for($user), takže ich vidí aj TwoFactor::fake():

$setup = $user->startTwoFactorEnrolment();                  // == TwoFactor::for($user)->start()
$setup = $user->startTwoFactorEnrolment('[email protected]', issuer: 'Acme Billing');

$user->confirmTwoFactor($request->string('code')->toString()); // == ->confirm($code)

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.