Module: Practical::Auth::Passkeys::EmergencyRegistrations
- Extended by:
- ActiveSupport::Concern
- Includes:
- WebAuthnDebugContext
- Defined in:
- app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb
Instance Method Summary collapse
- #new_challenge ⇒ Object
- #raw_credential ⇒ Object
- #render_credential_missing_or_could_not_be_parsed_error ⇒ Object
- #render_passkey_error(message:) ⇒ Object
- #request_form_params ⇒ Object
- #verify_credential_integrity ⇒ Object
- #verify_passkey_challenge ⇒ Object
Instance Method Details
#new_challenge ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 7 def new_challenge = ( relying_party: , user_details: user_details_for_registration, exclude: exclude_external_ids_for_registration ) store_challenge_in_session(options_for_registration: ) render json: end |
#raw_credential ⇒ Object
19 20 21 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 19 def raw_credential passkey_params[:passkey_credential] end |
#render_credential_missing_or_could_not_be_parsed_error ⇒ Object
43 44 45 46 47 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 43 def render_credential_missing_or_could_not_be_parsed_error render_passkey_error(message: (:credential_missing_or_could_not_be_parsed)) delete_registration_challenge return false end |
#render_passkey_error(message:) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 49 def render_passkey_error(message:) errors = Practical::Views::ErrorHandling.build_error_json( model: temporary_form_with_passkey_credential_error(message: ), helpers: helpers ) render json: errors, status: :unprocessable_entity end |
#request_form_params ⇒ Object
39 40 41 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 39 def request_form_params params.require(:new_emergency_passkey_registration_form).permit(:email) end |
#verify_credential_integrity ⇒ Object
23 24 25 26 27 28 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 23 def verify_credential_integrity return render_credential_missing_or_could_not_be_parsed_error if parsed_credential.nil? return render_credential_missing_or_could_not_be_parsed_error unless parsed_credential.kind_of?(Hash) rescue JSON::JSONError, TypeError return render_credential_missing_or_could_not_be_parsed_error end |
#verify_passkey_challenge ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb', line 30 def verify_passkey_challenge @webauthn_credential = verify_registration(relying_party: ) rescue ::WebAuthn::Error => e Honeybadger.notify(e, context: honeybadger_webauthn_context) error_key = Warden::WebAuthn::ErrorKeyFinder.webauthn_error_key(exception: e) render_passkey_error(message: (error_key)) return false end |