standard_id 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4eb189901d171ba934268cf6cc834e292b7a007f7124a69c61b073cdc518cf7
4
- data.tar.gz: 13e8b7939cfc95e67430d7bd02fecf8705cf2f5c436b719d9cb2a807647a042a
3
+ metadata.gz: 50cac29c9420971a28c8c4b401349cc0563270a16d519c0abd9052da600c685a
4
+ data.tar.gz: b47c1a99cc5d7d335f9dee1c53d4831cbcc70b3d933bb6130e600797eb4998df
5
5
  SHA512:
6
- metadata.gz: 8405e9b87e4d67d7632329d5d1a9a0165d1fe5828eeb0e4c82052ee96e61f37edbac90f908f914328acef1a891f245216c9855adef8d1afd9506bd83b809ada2
7
- data.tar.gz: f5118fc1300f5f83d21f388778cbf25d4edd41a13c83e9a8fd75274f777e9465ad861439cdbbf8ae761ecaff2fbfef255bddfac96eb187e69e834848a8e340ba
6
+ metadata.gz: 04e2bf5d6503e312fecdedfdee8f5eb7b1dd5c438c25f351ab222160249bb4de40d3b7348bffc4431d71047e05cb918ea399e67060ad66d946d17dc66d038ce8
7
+ data.tar.gz: 6f38767fc4bd02d3595cf243bf1d326881cf17baea355577416158bf43418a6423f7d3a14c9c2fa721b38c9f1ff4fa75658cd5b0b2f26e48d6fb970cc041c3cb
@@ -5,6 +5,12 @@ module StandardId
5
5
  subscribe_to StandardId::Events::PASSWORDLESS_CODE_GENERATED
6
6
 
7
7
  def call(event)
8
+ # Per-call manual-delivery request takes precedence over the global
9
+ # delivery config. Honors Otp.issue(delivery: :manual) callers who
10
+ # deliver the code themselves (custom widget flows, step-up
11
+ # challenges, etc.) and would otherwise receive a duplicate email
12
+ # from this subscriber when c.passwordless.delivery == :built_in.
13
+ return if event[:skip_sender]
8
14
  return unless built_in_delivery?
9
15
  return unless event[:channel] == "email"
10
16
 
@@ -30,7 +30,12 @@ module StandardId
30
30
  expires_in: expires_in,
31
31
  metadata: metadata
32
32
  )
33
- emit_code_generated(challenge, username)
33
+ # skip_sender is forwarded into the event payload so subscribers that
34
+ # deliver on PASSWORDLESS_CODE_GENERATED (e.g. PasswordlessDeliverySubscriber)
35
+ # can honor a per-call manual-delivery request — not just the legacy
36
+ # sender_callback. Without this, Otp.issue(delivery: :manual) silently
37
+ # double-delivers when c.passwordless.delivery == :built_in.
38
+ emit_code_generated(challenge, username, skip_sender: skip_sender)
34
39
  sender_callback&.call(username, challenge.code) unless skip_sender
35
40
  emit_code_sent(username) unless skip_sender
36
41
  challenge
@@ -158,14 +163,15 @@ module StandardId
158
163
  )
159
164
  end
160
165
 
161
- def emit_code_generated(challenge, username)
166
+ def emit_code_generated(challenge, username, skip_sender: false)
162
167
  StandardId::Events.publish(
163
168
  StandardId::Events::PASSWORDLESS_CODE_GENERATED,
164
169
  code_challenge: challenge,
165
170
  identifier: username,
166
171
  channel: connection_type,
167
172
  realm: @realm,
168
- expires_at: challenge.expires_at
173
+ expires_at: challenge.expires_at,
174
+ skip_sender: skip_sender
169
175
  )
170
176
  end
171
177
 
@@ -1,3 +1,3 @@
1
1
  module StandardId
2
- VERSION = "0.17.0"
2
+ VERSION = "0.17.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: standard_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaryl Sim