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

Správa prístupových kľúčov

Kľúče účtu vypíšete, premenujete alebo odvoláte cez jeho handle Passkeys::for($user) — model ani vzťah nemusíte meniť priamo. find(), rename() a revoke() prijímajú Passkey alebo jeho ID — int, prípadne reťazec, v akom prichádza parameter z routy — takže parameter z routy môžete odovzdať priamo. Reťazec, ktorý nie je kanonické kladné celé číslo, sa jednoducho nenájde:

use RoundlyConsulting\Passkeys\Facades\Passkeys;

$keys = Passkeys::for($request->user());

// A route parameter (a string) passes straight through — another account's id is refused:
$keys->rename($request->route('passkey'), 'Work laptop'); // fires PasskeyRenamed
$keys->revoke($request->route('passkey'));                // soft-deletes, fires PasskeyRevoked
  • rename() nastaví kozmetický názov, uloží ho a spustí PasskeyRenamed s pôvodným názvom. Názov nikdy nevstupuje do overovania.
  • revoke() kľúč zmaže cez soft delete a spustí PasskeyRevoked. Odvolaný kľúč sa už nedá použiť na prihlásenie a jeho ID sa stále počíta ako zaregistrované, takže autentifikátor ho nemôže potichu zaregistrovať znova.
  • Obe odmietnu kľúč iného účtu alebo už odvolaný kľúč jednotnou výnimkou CredentialNotFound.
  • Uprednostnite handle pred $passkey->delete() alebo priamym nastavením name — udalosti spúšťajú len akcie premenovania a odvolania, ktoré za ním stoja.

Výpis kľúčov

Kľúče účtu načítate cez ten istý handle alebo kdekoľvek, kde máte len model vlastníka, cez scope ownedBy. Scope porovnáva morph typ aj kľúč, takže sa nikdy nepomiešajú modely dvoch guardov s rovnakým kľúčom:

$keys = Passkeys::for($user);

$keys->all();      // Collection<int, Passkey> — active only, newest first
$keys->find($id);  // ?Passkey — null for a revoked one or another account's id
$keys->count();    // int  — revoked (soft-deleted) credentials are not counted
$keys->exists();   // bool — at least one active passkey

$user->hasPasskeys();   // == ->exists()  (model verb)
$user->passkeyCount();  // == ->count()   (model verb)

// From anywhere that only holds the owner model:
Passkey::query()->ownedBy($user)->latest('last_used_at')->get();

Bezpečná serializácia

Model Passkey skrýva public_key, user_handle, credential_id a credential_id_hash z výstupu do poľa aj JSON. Na explicitný a bezpečný výstup použite pribalený PasskeyResource:

use RoundlyConsulting\Passkeys\Http\Resources\PasskeyResource;

return PasskeyResource::collection(Passkeys::for($user)->all());

Každá položka obsahuje len to, čo obrazovka nastavení potrebuje — nikdy nie verejný COSE kľúč, identifikátor pre prihlásenie ani interné vyhľadávacie kľúče:

{
  "id": 12,
  "name": "MacBook Touch ID",
  "aaguid": "adce0002-35bc-c60a-648b-0b25f1f05503",
  "attestation_type": "none",
  "transports": ["internal", "hybrid"],
  "backup_eligible": true,
  "backup_state": true,
  "last_used_at": "2026-07-09T18:00:00+00:00",
  "created_at": "2026-07-01T18:00:00+00:00"
}

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.