standard_id 0.17.0 → 0.18.0

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: e940f3a408f896e103acb15090e6dbbe52500265942d2160ee5973b2b2ee6754
4
+ data.tar.gz: 5fba33203f9c224003a98df57939ba6aee1d82db5329b6d476a6dd0b22c2c6a2
5
5
  SHA512:
6
- metadata.gz: 8405e9b87e4d67d7632329d5d1a9a0165d1fe5828eeb0e4c82052ee96e61f37edbac90f908f914328acef1a891f245216c9855adef8d1afd9506bd83b809ada2
7
- data.tar.gz: f5118fc1300f5f83d21f388778cbf25d4edd41a13c83e9a8fd75274f777e9465ad861439cdbbf8ae761ecaff2fbfef255bddfac96eb187e69e834848a8e340ba
6
+ metadata.gz: f6ff1ad388785ef7f39f0b762c9dc9698dbe2466f62ec7c6383c91351dfb364bd3f63cdd690047e977b5ffc82bcf2ca049cde0e22c6ac774dba6fab0d5ef22c5
7
+ data.tar.gz: d57fe7efc78a2daed02cd7912b346ab8f631d71c8446f1421909fab440d4b86a2c96e60d866cefa51fb6602de69ae7a952065f24261d1e317e7ca823ee316883
@@ -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.18.0"
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.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaryl Sim
@@ -41,16 +41,22 @@ dependencies:
41
41
  name: jwt
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '2.7'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '4'
47
50
  type: :runtime
48
51
  prerelease: false
49
52
  version_requirements: !ruby/object:Gem::Requirement
50
53
  requirements:
51
- - - "~>"
54
+ - - ">="
52
55
  - !ruby/object:Gem::Version
53
56
  version: '2.7'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '4'
54
60
  - !ruby/object:Gem::Dependency
55
61
  name: ostruct
56
62
  requirement: !ruby/object:Gem::Requirement