roundly-consulting/passkeys-for-laravel
Add passkey (WebAuthn) authentication to Laravel apps. Register and verify passkeys so users can sign in with Face ID, Touch ID, or a security key instead of a password.
roundly-consulting/passkeys-for-laravel is an idiomatic Laravel package: it registers via service-provider auto-discovery and extends the framework's schema builder with a passkeyUserHandle(): ColumnDefinition macro. That pattern means it augments migrations/persistence rather than replacing the auth guard, so it should slot into an existing Laravel app with low structural friction. The presence of a dedicated schema macro indicates the package owns at least one column convention for the WebAuthn user handle — confirm whether it also manages routes, controllers, and the ceremony (challenge/attestation/assertion) endpoints or expects the host app to wire them.composer require plus auto-discovery covers the default path. The one non-default path is explicitly documented: under dont-discover, manual provider registration, or Testbench-based package development, the provider may not boot during static analysis, so phpstan/extension-installer must be permitted (or vendor/roundly-consulting/passkeys-for-laravel/extension.neon included manually). Both are standard Laravel/PHPStan mechanics.extension.neon and the project's PHPStan major.extension.neon?passkeyUserHandle() emit, and is it portable across SQLite/MySQL/PostgreSQL?phpstan/extension-installer permitted in our Composer allow-plugins policy, or must we use the manual includes path?phpstan/extension-installer, the extension loads automatically via extra.phpstan.includes; otherwise we add the extension.neon path to phpstan.neon.composer update. The only corrective work is cleanup: if the "undefined method" error was previously silenced in a baseline, ignoreErrors, or inline @phpstan-ignore, remove those suppressions so the real signal returns and we don't mask future regressions.extension.neon parses against our PHPStan major (neon schema changes between majors). Ensure the manual-include path isn't hard-coded in a way that breaks on vendor-path changes; prefer the installer. Check for macro-name collisions if other packages also extend Blueprint.composer.lock and allow-plugins entries.extension.neon on each PHPStan major upgrade. Keep phpstan/extension-installer in allow-plugins so the automatic path stays available; document the manual includes fallback for teams using dont-discover.dont-discover, manual registration) → recurring "undefined method" unless the extension is loaded.allow-plugins policy → extension silently not loaded; CI fails with the original error.How can I help you explore Laravel packages today?