hypervel / passkeys
Passwordless authentication using WebAuthn passkeys for Hypervel.
0.4.x-dev
2026-10-26 05:23 UTC
Requires
- php: ^8.4
- hypervel/auth: ^0.4
- hypervel/collections: ^0.4
- hypervel/config: ^0.4
- hypervel/console: ^0.4
- hypervel/container: ^0.4
- hypervel/context: ^0.4
- hypervel/contracts: ^0.4
- hypervel/database: ^0.4
- hypervel/events: ^0.4
- hypervel/foundation: ^0.4
- hypervel/http: ^0.4
- hypervel/queue: ^0.4
- hypervel/routing: ^0.4
- hypervel/session: ^0.4
- hypervel/support: ^0.4
- hypervel/validation: ^0.4
- nesbot/carbon: ^3.13.1
- paragonie/constant_time_encoding: ^3.1
- symfony/console: ^8.1.2
- symfony/http-foundation: ^8.1
- symfony/serializer: ^8.1
- web-auth/cose-lib: ^4.8.1
- web-auth/webauthn-lib: ^5.3
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-27 07:32:34 UTC
README
Documentation: https://hypervel.org/docs/fortify
Differences From Laravel
- Passkeys use a polymorphic
userowner relation so multiple authenticatable model classes can share the same passkeys table. - Standalone Passkeys follows Hypervel's current default guard selected by
Auth::shouldUse()orauth.defaults.guard, with optionalpasskeys.guardroute-group selection for built-in standalone routes. - The
{passkey}route binding resolves only the authenticated owner's passkeys, so another user's passkey returns 404 instead of Laravel's 403. Routes that manage other users' passkeys should use a different parameter name. - Passkeys omit Laravel's
relyingPartyName()becauseweb-auth/webauthn-libdeprecates non-empty relying party names. - Passkeys include explicit orphan cleanup for polymorphic owners.
- Passkeys support boot-time request-aware callbacks for redirects and WebAuthn relying party / origin settings, such as for custom domains, multi-guard apps, or multi-tenant apps.
- Passkeys keep Laravel's directly writable
$passkeyModelstatic property private so worker-lifetime state remains typed and resettable. UseusePasskeyModel()instead. - Passkeys omit Laravel's protected
StorePasskey::ensureCredentialIsUnique()pre-check because the uniquecredential_idindex rejects duplicates without an extra query. OverridecreatePasskey()to customize duplicate handling.
Ported from: https://github.com/laravel/passkeys-server