---
title: "Fasáda TwoFactor — Two-Factor for Laravel | Roundly"
description: "Jeden vstupný bod: TwoFactor::for($user) na aktiváciu, overenie pri prihlásení, stav, záložné kódy a vypnutie, plus ploché TOTP primitíva."
url: https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel/fasada-twofactor
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)

# 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

```php
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)` | `TwoFactorSetup` | Spustí (alebo reštartuje) čakajúcu aktiváciu. Vyhodí TwoFactorAlreadyEnabledException. |
| `confirm(string $code)` | `void` | Potvrdí čakajúcu aktiváciu prvým kódom. Vyhodí TwoFactorNotPendingException alebo InvalidTwoFactorCodeException. |
| `attempt(string $code)` | `VerificationResult` | Overenie pri prihlásení — limiter, replay guard, záložné kódy. Vyhodí TwoFactorRateLimitedException. |
| `status()` | `TwoFactorStatus` | Zapnuté, č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()` | `int` | Koľko jednorazových záložných kódov zostáva. |
| `disable()` | `void` | Vymaž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í:

```php
$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ť | Typ | Význam |
| --- | --- | --- |
| `enabled` | `bool` | Potvrdený druhý faktor — tajný kľúč je nastavený a potvrdený. |
| `pending` | `bool` | Aktivácia spustená, čaká sa na prvý kód. |
| `recoveryCodesRemaining` | `int` | Počet zostávajúcich jednorazových záložných kódov. |
| `confirmedAt` | `?CarbonImmutable` | Kedy bola aktuálna aktivácia potvrdená; null, ak 2FA nie je zapnuté. |

## TOTP primitíva

```php
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, 'user@acme.io');  // otpauth:// URI
$codes  = TwoFactor::generateRecoveryCodes();                   // list<string>
```

| Metóda | Vracia | Účel |
| --- | --- | --- |
| `for($user)` | `UserTwoFactor` | Handle pre jedného používateľa — všetko, čo číta alebo mení jeho 2FA (ďalšia tabuľka). |
| `generateSecret(?int $length = null)` | `string` | Base32 tajný kľúč z CSPRNG; dĺžka predvolene podľa secret\_length. |
| `currentCode(string $secret, ?int $timestamp = null)` | `string` | Aktuá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; kód sa berie presne tak, ako bol zadaný. |
| `provisioningUri(string $secret, string $label, ?string $issuer = null)` | `string` | URI 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()` | `TwoFactorFake` | Nahradí 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\] — skrytý aj vo vlastnom rámci fasády TwoFactor v stack trace — a overovanie prejde celé okno bez predčasného ukončenia, takže beží v konštantnom čase. Poškodený tajný kľúč vyhodí InvalidBase32Exception a kľúč, ktorý sa dá dekódovať, no nie je použiteľný (prázdny, kratší ako 10 bajtov alebo len z nulových bajtov), InvalidTwoFactorSecretException v currentCode(), verify() aj attempt() — provisioningUri() rovnako odmietne prázdny kľúč. Explicitne zadaná dĺžka mimo rozsahu či okno mimo 0–2 vyhodí 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](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)
