---
title: "Dvojfaktor a passkeys — Auth for Laravel | Roundly"
description: "Správa TOTP, záložných kódov a passkeys prihláseným účtom — s opätovným overením, invalidáciou, udalosťami a notifikáciami."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/dvojfaktor-a-passkeys
language: sk
---

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

[Auth for Laravel](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)

# Dvojfaktor a passkeys

Nastavenie faktorov počas prihlásenia popisuje časť Prihlasovacie výzvy. Táto stránka sa venuje prihlásenému účtu, ktorý spravuje vlastné faktory. Samotné ceremoniály patria balíkom two-factor-for-laravel a passkeys-for-laravel; tento balík pridáva režimy guardov, opätovné overenie, invalidáciu, udalosti a notifikácie.

## Dvojfaktorové overenie (TOTP + záložné kódy)

Dostupné, ak two\_factor.mode guardu nie je off:

| Krok | HTTP | Odpoveď |
| --- | --- | --- |
| Stav | `GET two-factor` | enabled, pending, recovery\_codes\_remaining, mode |
| Spustenie | `POST two-factor` | secret, provisioning\_uri, qr\_svg, recovery\_codes, issuer |
| Potvrdenie | `POST two-factor/confirm` | status enabled + tokens |
| Nové záložné kódy | `POST two-factor/recovery-codes` | recovery\_codes + tokens |
| Vypnutie (len v režime optional) | `DELETE two-factor` | status disabled + tokens |

Z PHP tie isté kroky spustí podkontext twoFactor() — odovzdajte token volajúceho $current, aby sa jeho zariadenie zachovalo a vrátil sa znovu vydaný pár:

```php
use RoundlyConsulting\Auth\Facades\Authentication;

$twoFactor = Authentication::guard('users')->twoFactor();

$status = $twoFactor->status($user);      // enabled, pending, recoveryCodesRemaining, mode
$setup  = $twoFactor->start($user);       // show $setup->qrSvg / ->secret, store ->recoveryCodes
$tokens = $twoFactor->confirm($user, $code, $current, $context);

$codes  = $twoFactor->regenerateRecoveryCodes($user, $current, $context);   // codes, tokens
$tokens = $twoFactor->disable($user, $current, $context);
```

- Spustenie pri už zapnutom 2FA vráti two\_factor\_already\_enabled (409); qr\_svg je null, ak je two\_factor.qr.enabled vypnuté alebo sa vykreslenie nepodarilo.
- Nesprávny alebo zastaraný potvrdzovací kód vráti invalid\_code (422); vypnutie v režime required vráti two\_factor\_required (409).
- Potvrdenie, nové kódy aj vypnutie použijú invalidation.two\_factor\_changed (predvolene others): všetky ostatné relácie skončia a volajúci dostane nový pár — prejdite naň okamžite.
- Udalosti TwoFactorEnabled, TwoFactorDisabled a RecoveryCodesRegenerated; použitie záložného kódu pri prihlásení spustí RecoveryCodeUsed a pošle e-mail so zostávajúcim počtom.
- Administrátor, ktorý 2FA vypína, odovzdá seba ako actor: a žiadny $current — Authentication::twoFactor()->disable($user, actor: $admin). E-mail two\_factor\_disabled potom vlastníkovi povie, že ho vypol administrátor, a TwoFactorDisabled nesie administrátora ako actor. Iný actor spolu s $current vyhodí InvalidArgumentException skôr, než sa čokoľvek zapíše.

## Passkeys

Dostupné, ak passkeys.mode guardu nie je off:

| Krok | HTTP | Odpoveď |
| --- | --- | --- |
| Zoznam | `GET passkeys` | Passkeys, najnovšie prvé |
| Options | `POST passkeys/options` | ceremonyId + publicKey |
| Registrácia | `POST passkeys` | 201 passkey + tokens |
| Premenovanie | `PATCH passkeys/{passkey}` | Passkey |
| Odstránenie | `DELETE passkeys/{passkey}` | status removed + tokens |

Z PHP cez podkontext passkeys() — rename() a remove() prijímajú Passkey alebo jeho id a passkey iného účtu je PasskeyNotFound:

```php
use RoundlyConsulting\Auth\Facades\Authentication;

$passkeys = Authentication::guard('users')->passkeys();

$options = $passkeys->registrationOptions($user);                          // ceremonyId + publicKey
$added   = $passkeys->register($user, $response, 'MacBook', $current, $context);   // passkey, tokens

$passkeys->all($user);                                                     // newest first
$passkeys->rename($user, $passkeyId, 'Work laptop');                       // a Passkey or its id
$tokens = $passkeys->remove($user, $passkeyId, $current, $context);
```

- Neúspešná attestation vráti passkey\_registration\_failed (422); názvy sa sanitizujú.
- Odstránenie posledného passkey sa odmietne s last\_credential (409), ak by účet nemal inú cestu dnu alebo guard passkeys vyžaduje. Spočítanie aj odstránenie prebehnú pod zámkom riadku účtu, takže z dvoch súbežných odstránení jedno uspeje a druhé dostane last\_credential — nikdy neuspejú obe.
- Registrácia aj odstránenie použijú invalidation.passkey\_changed (predvolene none, takže tokens je null) a spustia PasskeyAdded / PasskeyRemoved.
- Administrátor, ktorý passkey odstraňuje, odovzdá seba ako actor: (a žiadny $current): passkey\_removed potom povie, že ho odstránil administrátor, a PasskeyRemoved nesie actora. Platia rovnaké pravidlá ako pri dvojfaktore.

## Ako sa režimy kombinujú pri prihlásení

| Nastavenie | Účinok |
| --- | --- |
| `two_factor.mode = required` | Účty bez TOTP ho musia nastaviť počas prihlásenia (alebo ho splniť passkey pri passkey\_satisfies\_required). |
| `passkeys.mode = required` | Účty bez passkey si ho musia zaregistrovať počas prihlásenia — pri akomkoľvek spôsobe prihlásenia, aj pri e-mailovom, ktoré two\_factor.after\_email\_login = false vyníma z druhého faktora. |
| `passkeys.second_factor` | Či passkey môže (allowed) alebo musí (required\_when\_enrolled, required) byť druhým krokom po prihlásení heslom či e-mailom. |
| `passkeys.satisfies_mfa` | Prihlásenie passkey s overením používateľa sa samo počíta ako viacfaktorové — aj pri dodatočnom overení kvôli riziku; pri false si dodatočné overenie vyžiada TOTP. |

## 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/auth-for-laravel.md)
