Module: BetterAuth::Passkey::Challenges
- Defined in:
- lib/better_auth/passkey/challenges.rb
Constant Summary collapse
- CHALLENGE_MAX_AGE =
60 * 5
Class Method Summary collapse
- .challenge_cookie(ctx, config) ⇒ Object
- .challenge_token(ctx, config) ⇒ Object
- .find_challenge(ctx, verification_token) ⇒ Object
- .store_challenge(ctx, config, challenge, user_id) ⇒ Object
Class Method Details
.challenge_cookie(ctx, config) ⇒ Object
41 42 43 |
# File 'lib/better_auth/passkey/challenges.rb', line 41 def (ctx, config) ctx.context.(config.dig(:advanced, :web_authn_challenge_cookie), max_age: CHALLENGE_MAX_AGE) end |
.challenge_token(ctx, config) ⇒ Object
37 38 39 |
# File 'lib/better_auth/passkey/challenges.rb', line 37 def challenge_token(ctx, config) ctx.((ctx, config).name, ctx.context.secret) end |
.find_challenge(ctx, verification_token) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/better_auth/passkey/challenges.rb', line 28 def find_challenge(ctx, verification_token) verification = ctx.context.internal_adapter.find_verification_value(verification_token) return nil if verification.nil? || BetterAuth::Routes.expired_time?(verification["expiresAt"] || verification[:expiresAt]) JSON.parse(verification.fetch("value") { verification.fetch(:value) }) rescue JSON::ParserError nil end |
.store_challenge(ctx, config, challenge, user_id) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/better_auth/passkey/challenges.rb', line 12 def store_challenge(ctx, config, challenge, user_id) user_data = user_id.is_a?(Hash) ? user_id : {id: user_id} verification_token = Crypto.random_string(32) = (ctx, config) ctx.(.name, verification_token, ctx.context.secret, .attributes.merge(max_age: CHALLENGE_MAX_AGE)) ctx.context.internal_adapter.create_verification_value( identifier: verification_token, value: JSON.generate({ expectedChallenge: challenge, userData: user_data, context: BetterAuth::Passkey::Utils.normalize_hash(ctx.query)[:context] }), expiresAt: Time.now + CHALLENGE_MAX_AGE ) end |