Aktivácia
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ť | Typ | Obsah |
|---|---|---|
secret | string | Base32 tajný kľúč — už uložený a zašifrovaný. |
provisioningUri | string | URI otpauth://, ktoré vykreslíte ako QR kód. |
recoveryCodes | list<string> | Záložné kódy v čitateľnej podobe — jediná kópia, zobrazte ich raz. |
issuer | string | Vydavateľ 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 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.