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

Nastavenie modelu

Implementujte kontrakt, použite trait a rozbaľte twoFactorCasts() do castov modelu:

use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\TwoFactor\Concerns\HasTwoFactorAuthentication;
use RoundlyConsulting\TwoFactor\Contracts\TwoFactorAuthenticatable;

final class User extends Authenticatable implements TwoFactorAuthenticatable
{
    use HasTwoFactorAuthentication;

    protected function casts(): array
    {
        return [
            // ...your other casts
            ...$this->twoFactorCasts(),
        ];
    }
}

twoFactorCasts() nastaví encrypted pre tajný kľúč, datetime pre confirmed_at a pre záložné kódy array (režim hashed, predvolený) alebo encrypted:array (režim encrypted). Názvy stĺpcov sa vždy čítajú z two-factor.columns, takže upravená schéma funguje bez ďalších zásahov.

Skryté pri serializácii

Trait automaticky pridá stĺpce tajného kľúča, záložných kódov a posledného časového kroku do $hidden modelu, takže vrátenie používateľa z routy nikdy neprezradí dešifrovaný kľúč ani kódy:

return $user;          // from a route — no secret, no recovery codes
$user->toArray();      // two_factor_secret, two_factor_recovery_codes and
$user->toJson();       // two_factor_last_used_timestep are always hidden

$user->two_factor_confirmed_at; // stays visible for UI state

Pomocné metódy stavu

$user->hasTwoFactorEnabled();               // secret set + confirmed
$user->hasPendingTwoFactor();               // secret set, not yet confirmed
$user->twoFactorSecret();                   // ?string
$user->twoFactorRecoveryCodes();            // list<string>
$user->twoFactorRecoveryCodesRemaining();   // int
$user->twoFactorLabel();                    // provisioning label (email → primary key)

Aktivovaný používateľ má tajný kľúč aj čas potvrdenia confirmed_at; čakajúci používateľ má tajný kľúč, ale ešte ho nepotvrdil. Overením pri prihlásení môže prejsť len aktivovaný používateľ. V režime hashed vracia twoFactorRecoveryCodes() uložené haše, nie čitateľné kódy. Celý stav naraz získate cez TwoFactor::for($user)->status() — pozrite Fasáda TwoFactor.

Označenie účtu v URI

Označenie v URI otpauth:// je predvolene atribút email, inak primárny kľúč. Ak ho chcete odvodiť od používateľského mena či telefónu, prepíšte twoFactorLabel():

final class User extends Authenticatable implements TwoFactorAuthenticatable
{
    use HasTwoFactorAuthentication;

    // Key the otpauth:// label on a username instead of the email.
    public function twoFactorLabel(): string
    {
        return $this->username;
    }
}

Stĺpce v databáze

Stĺpec (predvolený názov)TypPoznámka
two_factor_secrettext, nullableŠifrovaný base32 tajný kľúč. Skrytý pri serializácii.
two_factor_recovery_codestext, nullableHašovaný (predvolene) alebo šifrovaný zoznam kódov. Skrytý pri serializácii.
two_factor_confirmed_attimestamp, nullableNastaví sa pri potvrdení aktivácie. Zostáva viditeľný pre stav v UI.
two_factor_last_used_timestepunsignedBigInteger, nullableČíta a zapisuje ho replay guard column. Skrytý pri serializácii.

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.