Class: Devise::Strategies::PasskeyAuthenticatable
- Inherits:
-
Base
- Object
- Base
- Devise::Strategies::PasskeyAuthenticatable
- Defined in:
- lib/devise/strategies/passkey_authenticatable.rb
Instance Method Summary collapse
-
#authenticate! ⇒ Object
rubocop:disable Metrics/AbcSize.
- #valid? ⇒ Boolean
Instance Method Details
#authenticate! ⇒ Object
rubocop:disable Metrics/AbcSize
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/devise/strategies/passkey_authenticatable.rb', line 10 def authenticate! # rubocop:disable Metrics/AbcSize passkey_from_params = WebAuthn::Credential.from_get(JSON.parse(passkey_param)) return fail!(:passkey_not_found) if passkey_from_params.user_handle.nil? resource = resource_class.find_by(webauthn_id: passkey_from_params.user_handle) stored_passkey = resource&.passkeys&.find_by(external_id: passkey_from_params.id) return fail!(:passkey_not_found) if stored_passkey.blank? verify_passkeys(passkey_from_params, stored_passkey) remember_me(resource) success!(resource) rescue WebAuthn::Error fail!(:passkey_verification_failed) ensure session.delete(:authentication_challenge) end |
#valid? ⇒ Boolean
6 7 8 |
# File 'lib/devise/strategies/passkey_authenticatable.rb', line 6 def valid? passkey_param.present? && session[:authentication_challenge].present? end |