clerk-sdk-ruby 2.6.0 → 2.8.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: 487a2987f913d5c256ebad719075bbb121af707bc5e2419f12d886f4a7a643f2
4
- data.tar.gz: 28af474ba5555c26fafb0f64e4969030f0b4fc56ca3df4db3faca0a3855fd5a2
3
+ metadata.gz: 055dee5554e9405faf7a77400bd0428eb2ddb6d869abf51af5dc698c69492eb9
4
+ data.tar.gz: '09e4d7369cda1a8630776a6308b326630e4ffbce8f9ac9b62977201bf774e8a7'
5
5
  SHA512:
6
- metadata.gz: 307f730b9fa19db0e74954e33241f917699af10d876a8314d309366ff43930c7531d204d6c939003b18cee98d4189ffbd56bc8ea12ac1536e4b7d35be68f3057
7
- data.tar.gz: eef7c69d6d233a80f4c4bbd2df328c9fa3ed74cdfaa0548f1200601d1e632906f403c89e6055698c8e092e9923344202501f742be5a183ea774b59ccaecb9143
6
+ metadata.gz: c05c73eb36c646f37264b72c09c3101173c241acbda0a55c0c1d6a8ef10562b1cb244f1d977ecf19bd20ef9020eda8307fb9ddb2359c58ce8c65428ac88ba62d
7
+ data.tar.gz: 4825ec3bd309908efd7bb08553e68e7d5794701a098df9ad2a4aa8032d78f326c6809d13612a07e08ced54ebaa7768f8089d30213250e4f60299af5fd41ccf90
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  .byebug_history
11
11
  *.gem
12
+
13
+ .idea
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## unreleased
2
2
 
3
+ ## 2.8.0 - 2022-11-29
4
+
5
+ - feat: Add support for the users.verify_totp endpoint
6
+
7
+ ## 2.7.0 - 2022-11-02
8
+
9
+ - feat: Add `#clerk_organization` and `#clerk_organization_id` helpers to fetch the current user's active organization [https://github.com/clerkinc/clerk-sdk-ruby/pull/22]
10
+ - feat: Implement Organization Metadata update endpoint [https://github.com/clerkinc/clerk-sdk-ruby/pull/21]
11
+
3
12
  ## 2.6.0 - 2022-11-01
4
13
 
5
14
  - feat: Implement Organization endpoints [https://github.com/clerkinc/clerk-sdk-ruby/pull/20]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clerk-sdk-ruby (2.6.0)
4
+ clerk-sdk-ruby (2.7.0)
5
5
  faraday (~> 1.4.1)
6
6
  jwt (~> 2.2)
7
7
 
@@ -30,6 +30,7 @@ GEM
30
30
  timecop (0.9.4)
31
31
 
32
32
  PLATFORMS
33
+ universal-darwin-21
33
34
  x86_64-linux
34
35
 
35
36
  DEPENDENCIES
@@ -40,4 +41,4 @@ DEPENDENCIES
40
41
  timecop (~> 0.9.4)
41
42
 
42
43
  BUNDLED WITH
43
- 2.2.32
44
+ 2.3.25
@@ -49,6 +49,18 @@ module Clerk
49
49
  request.env["clerk"].user_id
50
50
  end
51
51
 
52
+ # Makes a request to the Clerk API to fetch the data of the authenticated
53
+ # session's organization. If caching is configured (see
54
+ # Config.middleware_cache_store), subsequent calls will return the cached
55
+ # object.
56
+ def clerk_organization
57
+ request.env["clerk"].org
58
+ end
59
+
60
+ def clerk_organization_id
61
+ request.env["clerk"].org_id
62
+ end
63
+
52
64
  def clerk_user_signed_in?
53
65
  !!clerk_verified_session_claims
54
66
  end
@@ -69,7 +81,8 @@ module Clerk
69
81
  helper_method :clerk_session, :clerk_reverify_session!,
70
82
  :clerk_verified_session_claims, :clerk_verified_session_token,
71
83
  :clerk_user, :clerk_user_id, :clerk_user_signed_in?, :clerk_sign_in_url,
72
- :clerk_sign_up_url, :clerk_user_profile_url
84
+ :clerk_sign_up_url, :clerk_user_profile_url,
85
+ :clerk_organization, :clerk_organization_id
73
86
  end
74
87
  end
75
88
  end
@@ -36,6 +36,18 @@ module Clerk
36
36
  @session_claims["sub"]
37
37
  end
38
38
 
39
+ def org
40
+ return nil if org_id.nil?
41
+
42
+ @org ||= fetch_org(org_id)
43
+ end
44
+
45
+ def org_id
46
+ return nil if user_id.nil?
47
+
48
+ @session_claims["org_id"]
49
+ end
50
+
39
51
  private
40
52
 
41
53
  def fetch_user(user_id)
@@ -44,6 +56,12 @@ module Clerk
44
56
  end
45
57
  end
46
58
 
59
+ def fetch_org(org_id)
60
+ cached_fetch("clerk_org:#{org_id}") do
61
+ sdk.organizations.find(org_id)
62
+ end
63
+ end
64
+
47
65
  def cached_fetch(key, &block)
48
66
  if store = Clerk.configuration.middleware_cache_store
49
67
  store.fetch(key, expires_in: CACHE_TTL, &block)
@@ -105,7 +123,7 @@ module Clerk
105
123
  rescue JWT::DecodeError
106
124
  return signed_out(env) # malformed JSON authorization header
107
125
  end
108
-
126
+
109
127
  token = verify_token(header_token)
110
128
  return signed_in(env, token, header_token) if token
111
129
 
@@ -0,0 +1,17 @@
1
+ require "forwardable"
2
+ require_relative "plural_resource"
3
+
4
+ module Clerk
5
+ module Resources
6
+ class EmailAddresses
7
+ extend Forwardable
8
+
9
+ def initialize(client)
10
+ @client = client
11
+ @resource = PluralResource.new(client, "email_addresses")
12
+ end
13
+
14
+ def_delegators :@resource, :find, :create, :update, :delete
15
+ end
16
+ end
17
+ end
@@ -13,6 +13,14 @@ module Clerk
13
13
 
14
14
  def_delegators :@resource, :all, :find, :create, :update, :delete
15
15
 
16
+ def update_metadata(org_id, private_metadata: {}, public_metadata: {})
17
+ data = {}
18
+ data["private_metadata"] = private_metadata.to_json if !private_metadata.empty?
19
+ data["public_metadata"] = public_metadata.to_json if !public_metadata.empty?
20
+
21
+ @client.request(:patch, "#{@resource.resource_path(org_id)}/metadata", body: data)
22
+ end
23
+
16
24
  #
17
25
  # Invitations
18
26
  #
@@ -0,0 +1,17 @@
1
+ require "forwardable"
2
+ require_relative "plural_resource"
3
+
4
+ module Clerk
5
+ module Resources
6
+ class PhoneNumbers
7
+ extend Forwardable
8
+
9
+ def initialize(client)
10
+ @client = client
11
+ @resource = PluralResource.new(client, "phone_numbers")
12
+ end
13
+
14
+ def_delegators :@resource, :find, :create, :update, :delete
15
+ end
16
+ end
17
+ end
@@ -21,6 +21,10 @@ module Clerk
21
21
  @client.request(:post, "#{@resource.resource_path(user_id)}/verify_password", body: { password: password })
22
22
  end
23
23
 
24
+ def verify_totp(user_id, totp_or_backup_code)
25
+ @client.request(:post, "#{@resource.resource_path(user_id)}/verify_totp", body: { code: totp_or_backup_code })
26
+ end
27
+
24
28
  def disable_mfa(user_id)
25
29
  @client.request(:delete, "#{@resource.resource_path(user_id)}/mfa")
26
30
  end
@@ -1,8 +1,10 @@
1
1
  require_relative "resources/allowlist_identifiers"
2
2
  require_relative "resources/allowlist"
3
3
  require_relative "resources/clients"
4
+ require_relative "resources/email_addresses"
4
5
  require_relative "resources/emails"
5
6
  require_relative "resources/organizations"
7
+ require_relative "resources/phone_numbers"
6
8
  require_relative "resources/sessions"
7
9
  require_relative "resources/sms_messages"
8
10
  require_relative "resources/users"
data/lib/clerk/sdk.rb CHANGED
@@ -9,8 +9,10 @@ require "jwt"
9
9
  require_relative "resources/allowlist_identifiers"
10
10
  require_relative "resources/allowlist"
11
11
  require_relative "resources/clients"
12
+ require_relative "resources/email_addresses"
12
13
  require_relative "resources/emails"
13
14
  require_relative "resources/organizations"
15
+ require_relative "resources/phone_numbers"
14
16
  require_relative "resources/sessions"
15
17
  require_relative "resources/sms_messages"
16
18
  require_relative "resources/users"
@@ -111,6 +113,10 @@ module Clerk
111
113
  Resources::Clients.new(self)
112
114
  end
113
115
 
116
+ def email_addresses
117
+ Resources::EmailAddresses.new(self)
118
+ end
119
+
114
120
  def emails
115
121
  Resources::Emails.new(self)
116
122
  end
@@ -119,6 +125,10 @@ module Clerk
119
125
  Resources::Organizations.new(self)
120
126
  end
121
127
 
128
+ def phone_numbers
129
+ Resources::PhoneNumbers.new(self)
130
+ end
131
+
122
132
  def sessions
123
133
  Resources::Sessions.new(self)
124
134
  end
data/lib/clerk/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Clerk
4
- VERSION = "2.6.0"
4
+ VERSION = "2.8.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clerk-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clerk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-01 00:00:00.000000000 Z
11
+ date: 2022-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -97,9 +97,11 @@ files:
97
97
  - lib/clerk/resources/allowlist.rb
98
98
  - lib/clerk/resources/allowlist_identifiers.rb
99
99
  - lib/clerk/resources/clients.rb
100
+ - lib/clerk/resources/email_addresses.rb
100
101
  - lib/clerk/resources/emails.rb
101
102
  - lib/clerk/resources/jwks.rb
102
103
  - lib/clerk/resources/organizations.rb
104
+ - lib/clerk/resources/phone_numbers.rb
103
105
  - lib/clerk/resources/plural_resource.rb
104
106
  - lib/clerk/resources/sessions.rb
105
107
  - lib/clerk/resources/singular_resource.rb
@@ -130,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  - !ruby/object:Gem::Version
131
133
  version: '0'
132
134
  requirements: []
133
- rubygems_version: 3.2.5
135
+ rubygems_version: 3.3.7
134
136
  signing_key:
135
137
  specification_version: 4
136
138
  summary: Clerk SDK for Ruby.