---
title: "Overovanie pri prihlásení — Two-Factor for Laravel | Roundly"
description: "Overte kód cez TwoFactor::for($user)->attempt() — najprv TOTP s ochranou proti opakovaniu, potom jednorazový záložný kód."
url: https://roundly-consulting.com/sk/open-source/navody/two-factor-for-laravel/overovanie-pri-prihlaseni
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)

# Overovanie pri prihlásení

Po overení hesla skontrolujte kód, ktorý používateľ zadá. TwoFactor::for($user)->attempt() prijme TOTP kód aj záložný kód a vráti VerificationResult:

```php
use RoundlyConsulting\TwoFactor\Exceptions\TwoFactorRateLimitedException;
use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

try {
    $result = TwoFactor::for($user)->attempt($request->string('code')->toString());
} catch (TwoFactorRateLimitedException $e) {
    // too many failed attempts — retry after $e->secondsUntilAvailable seconds
}

if ($result->verified) {
    // accepted — TOTP (replay-safe) or a single-use recovery code
}
```

## Ako používateľ overením prešiel

Výsledok prezradí, či kód prešiel, akou metódou a koľko záložných kódov ešte zostáva:

```php
use RoundlyConsulting\TwoFactor\Enums\TwoFactorMethod;
use RoundlyConsulting\TwoFactor\Facades\TwoFactor;

$result = TwoFactor::for($user)->attempt($request->string('code')->toString());

$result->verified;               // bool — TOTP (replay-safe) or a single-use recovery code
$result->method;                 // TwoFactorMethod::Totp | ::RecoveryCode | null on failure
$result->remainingRecoveryCodes; // int, after this attempt — "1 recovery code left"
$result->replayed;               // true when a valid code's timestep was already used

if ($result->method === TwoFactorMethod::RecoveryCode) {
    // e.g. notify the user, add 'recovery_code' to an amr claim
}
```

| Vlastnosť | Typ | Význam |
| --- | --- | --- |
| `verified` | bool | Kód prešiel — TOTP (odolný voči opakovaniu) alebo jednorazový záložný kód. |
| `method` | ?TwoFactorMethod | Totp alebo RecoveryCode; null, ak overenie neprešlo. |
| `remainingRecoveryCodes` | int | Počet záložných kódov, ktoré zostávajú po tomto pokuse. |
| `replayed` | bool | Platný TOTP kód, ktorého časový krok už bol použitý. |

Počet zostávajúcich kódov po použití záložného kódu sa číta z riadku uzamknutého počas spotreby, takže je správny aj pri súbehu dvoch požiadaviek.

## Poradie kontrol

- Používateľ bez potvrdenej aktivácie zlyhá okamžite — čakajúca aktivácia nikdy nie je platný druhý faktor.
- Pokus sa najprv započíta do vstavaného limitera, jedným atomickým zvýšením. Po prekročení attempts.max sa vyhodí TwoFactorRateLimitedException ešte pred akýmkoľvek overovaním.
- TOTP kód sa overí v rámci tolerancie posunu; pri zhode sa jeho časový krok atomicky zaberie. Už zabratý krok znamená opakovanie — výsledok má replayed: true a vyvolá sa TwoFactorReplayDetected. Medzery a pomlčky sa najprv odstránia, ak potom zostane presne nastavený počet číslic (123 456, 123-456), takže správne prečítaný kód sa nezapočíta ako chybný pokus; čokoľvek iné sa overí tak, ako bolo zadané.
- Inak sa kód skúsi ako jednorazový záložný kód — normalizovaný tak, ako ho ľudia píšu — a pri zhode sa spotrebuje.
- Úspech vynuluje počítadlo limitera a vyvolá TwoFactorVerified. Zlyhanie aj opakovanie zostávajú započítané; skutočné zlyhanie navyše vyvolá TwoFactorVerificationFailed.

## Priamo z modelu používateľa

Dve skratky traitu spúšťajú to isté attempt(): jedna vráti výsledok, druhá len bool:

```php
$result = $user->attemptTwoFactorCode($code);  // → VerificationResult (== TwoFactor::for($user)->attempt())
$ok     = $user->verifyTwoFactorCode($code);   // bool (== ->attempt($code)->verified)
```

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