NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Passkeys for Laravel

Fasáda Passkeys

Fasáda Passkeys je jediný vstupný bod. Všetko, čo patrí jednému účtu, ide cez Passkeys::for($user), ktorý vráti handle UserPasskeys; prihlásenie bez mena (discoverable) zostáva ploché, pretože účet ešte nepoznáte. Každá ceremónia sú dve volania — pripraviť možnosti pre prehliadač a potom overiť jeho odpoveď:

use RoundlyConsulting\Passkeys\Facades\Passkeys;

// Everything scoped to one account goes through its handle.
$keys = Passkeys::for($user);                    // UserPasskeys

$keys->registrationOptions($overrides);          // CreationOptionsData ($overrides optional)
$keys->register($response, name: 'Laptop');      // Passkey
$keys->authenticationOptions($overrides);        // RequestOptionsData bound to this account
$keys->authenticate($response);                  // Passkey — only this account's credential
$keys->all();                                    // Collection<Passkey>, newest first
$keys->find($id);                                // ?Passkey — null for another account's id
$keys->count();                                  // int
$keys->exists();                                 // bool
$keys->rename($passkeyOrId, 'Work laptop');      // Passkey — refuses another account's passkey
$keys->revoke($passkeyOrId);                     // void — refuses another account's passkey

// No account yet: the discoverable (usernameless) login stays flat.
Passkeys::authenticationOptions($overrides);     // RequestOptionsData ($overrides optional)
Passkeys::authenticate($response, $expect);      // Passkey — $expect optionally holds it to an owner (type)
Passkeys::attestationFormats();                  // ['none', 'packed', 'apple']

Všetky metódy

MetódaVraciaČo robí
for($user)UserPasskeysHandle účtu — každé volanie na ňom platí len pre $user.
for($user)->registrationOptions(?$overrides)CreationOptionsDataMožnosti pre navigator.credentials.create(); uloží jednorazovú challenge.
for($user)->register($response, ?$name)PasskeyOverí atestačnú odpoveď a uloží kľúč, voliteľne s názvom.
for($user)->authenticationOptions(?$overrides)RequestOptionsDataMožnosti prihlásenia viazané na kľúče tohto účtu.
for($user)->authenticate($response)PasskeyOverí podpis a pripustí len kľúč tohto účtu.
for($user)->all()Collection<int, Passkey>Aktívne kľúče účtu, od najnovšieho.
for($user)->find($id)?PasskeyJeden aktívny kľúč podľa ID (int alebo reťazec) — null pre odvolaný kľúč, ID iného účtu alebo nečíselný reťazec.
for($user)->count() / exists()int / boolPočet aktívnych kľúčov a či existuje aspoň jeden.
for($user)->rename($passkeyOrId, $name)PasskeyPremenuje kľúč tohto účtu; spustí PasskeyRenamed.
for($user)->revoke($passkeyOrId)voidZmaže kľúč tohto účtu cez soft delete; spustí PasskeyRevoked.
authenticationOptions(?$overrides)RequestOptionsDataMožnosti prihlásenia bez mena — odpovedať môže kľúč ľubovoľného účtu.
authenticate($response, ?$expect)PasskeyOverí prihlásenie bez mena, voliteľne viazané na vlastníka alebo typ vlastníka.
attestationFormats()list<string>Formáty atestácie, ktoré táto relying party vie overiť.
fake()PasskeysFakeNahradí službu zaznamenávajúcou testovacou náhradou bez kryptografie (pozri Testovanie).

Rozsah účtu je bezpečnostná hranica

  • for($user)->authenticate() pripustí len kľúč tohto účtu — výsledok viaže cez AuthenticationExpectation::owner($user).
  • find(), rename() a revoke() prijímajú Passkey alebo jeho ID — int, prípadne reťazec, v akom prichádza parameter z routy — a rename() a revoke() kľúč iného účtu, prípadne už odvolaný kľúč, odmietnu jednotnou výnimkou CredentialNotFound. Parameter z routy tak môžete odovzdať priamo; reťazec, ktorý nie je kanonické kladné celé číslo, sa jednoducho nenájde.
  • find() vráti pre ID iného účtu null a neprezradí, že taký kľúč existuje.

Každé volanie získa svoju akciu z kontajnera, takže vlastná implementácia akcie platí pre fasádu, injektovanú službu aj metódy modelu. Fasáda je odporúčaná voľba; ďalšia sekcia ukazuje dva rovnocenné vstupné body bez nej.

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.