clerk-sdk-ruby 2.6.0 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
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.