---
title: "Nastavenie modelu — Two-Factor for Laravel | Roundly"
description: "Implementujte TwoFactorAuthenticatable, použite trait HasTwoFactorAuthentication a rozbaľte twoFactorCasts() do castov modelu."
url: https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel/nastavenie-modelu
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Two-Factor for Laravel](https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel.md)

# Nastavenie modelu

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

```php
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:

```php
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

```php
$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():

```php
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) | Typ | Poznámka |
| --- | --- | --- |
| `two_factor_secret` | text, nullable | Šifrovaný base32 tajný kľúč. Skrytý pri serializácii. |
| `two_factor_recovery_codes` | text, nullable | Hašovaný (predvolene) alebo šifrovaný zoznam kódov. Skrytý pri serializácii. |
| `two_factor_confirmed_at` | timestamp, nullable | Nastaví sa pri potvrdení aktivácie. Zostáva viditeľný pre stav v UI. |
| `two_factor_last_used_timestep` | unsignedBigInteger, 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel.md)
