kinde_sdk 1.2.3 → 1.3.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 +4 -4
- data/lib/kinde_sdk/configuration.rb +1 -1
- data/lib/kinde_sdk/controllers/auth_controller.rb +152 -0
- data/lib/kinde_sdk/version.rb +1 -1
- data/lib/kinde_sdk.rb +76 -19
- data/spec/kinde_sdk_spec.rb +3 -3
- metadata +95 -94
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc5ca096d7760fdbb44aad50f80581bedad34c59961401731a46fdcfe12de6e8
|
4
|
+
data.tar.gz: 7c172304b38b70bb4446e25db64cd3ce98c28aadded415d32a776b82885095d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 963aabbb2e5d9ea92c3369d127f21ea3181aa646bbf087a1e4322c7d4721f0c267a8ba0f5f55d5a1c389bdca7d75844193fa039969f6760fd0c59419e6e8897b
|
7
|
+
data.tar.gz: 520cd6180f22cf93041b0de2cd89898d6640c275dd4f9d8e19efa4514969b18dc4a440265ab3a1b35aa81ab0707adad6eeb45c11d7bc8ab68eb978c7bb969616
|
@@ -36,7 +36,7 @@ module KindeSdk
|
|
36
36
|
yield(self) if block_given?
|
37
37
|
end
|
38
38
|
|
39
|
-
def oauth_client
|
39
|
+
def oauth_client(client_id: @client_id, client_secret: @client_secret, domain: @domain, authorize_url: @authorize_url, token_url: @token_url )
|
40
40
|
::OAuth2::Client.new(
|
41
41
|
client_id,
|
42
42
|
client_secret,
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require 'action_controller'
|
2
|
+
require 'uri'
|
3
|
+
require 'cgi'
|
4
|
+
require 'net/http'
|
5
|
+
require 'json'
|
6
|
+
require 'jwt'
|
7
|
+
|
8
|
+
module KindeSdk
|
9
|
+
class AuthController < ActionController::Base
|
10
|
+
# Add before_action to validate nonce in callback
|
11
|
+
before_action :validate_state, only: :callback
|
12
|
+
|
13
|
+
def auth
|
14
|
+
# Generate a secure random nonce
|
15
|
+
nonce = SecureRandom.urlsafe_base64(16)
|
16
|
+
|
17
|
+
# Call KindeSdk.auth_url with nonce
|
18
|
+
auth_data = KindeSdk.auth_url(nonce: nonce)
|
19
|
+
|
20
|
+
# Store in session
|
21
|
+
session[:code_verifier] = auth_data[:code_verifier] if auth_data[:code_verifier].present?
|
22
|
+
session[:auth_nonce] = nonce
|
23
|
+
session[:auth_state] = {
|
24
|
+
requested_at: Time.current.to_i,
|
25
|
+
redirect_url: auth_data[:url]
|
26
|
+
}
|
27
|
+
|
28
|
+
redirect_to auth_data[:url], allow_other_host: true
|
29
|
+
end
|
30
|
+
|
31
|
+
def callback
|
32
|
+
tokens = KindeSdk.fetch_tokens(
|
33
|
+
params[:code],
|
34
|
+
code_verifier: KindeSdk.config.pkce_enabled ? session[:code_verifier] : nil
|
35
|
+
).slice(:access_token, :id_token, :refresh_token, :expires_at)
|
36
|
+
|
37
|
+
|
38
|
+
# Validate nonce in ID token
|
39
|
+
id_token = tokens[:id_token]
|
40
|
+
issuer = KindeSdk.config.domain
|
41
|
+
client_id = KindeSdk.config.client_id
|
42
|
+
original_nonce = session[:auth_nonce]
|
43
|
+
unless validate_nonce(id_token, original_nonce, issuer, client_id)
|
44
|
+
Rails.logger.warn("Nonce validation failed")
|
45
|
+
redirect_to "/", alert: "Invalid authentication nonce"
|
46
|
+
return
|
47
|
+
end
|
48
|
+
|
49
|
+
# Store tokens and user in session
|
50
|
+
session[:kinde_auth] = OAuth2::AccessToken.from_hash(KindeSdk.config.oauth_client, tokens).to_hash
|
51
|
+
.slice(:access_token, :refresh_token, :expires_at)
|
52
|
+
session[:kinde_user] = KindeSdk.client(tokens).oauth.get_user.to_hash
|
53
|
+
|
54
|
+
# Clear nonce and state after successful authentication
|
55
|
+
session.delete(:auth_nonce)
|
56
|
+
session.delete(:auth_state)
|
57
|
+
session.delete(:code_verifier)
|
58
|
+
redirect_to "/"
|
59
|
+
rescue StandardError => e
|
60
|
+
Rails.logger.error("Authentication callback failed: #{e.message}")
|
61
|
+
redirect_to "/", alert: "Authentication failed"
|
62
|
+
end
|
63
|
+
|
64
|
+
def client_credentials_auth
|
65
|
+
result = KindeSdk.client_credentials_access(
|
66
|
+
client_id: ENV["KINDE_MANAGEMENT_CLIENT_ID"],
|
67
|
+
client_secret: ENV["KINDE_MANAGEMENT_CLIENT_SECRET"]
|
68
|
+
)
|
69
|
+
|
70
|
+
if result["error"].present?
|
71
|
+
Rails.logger.error("Client credentials auth failed: #{result['error']}")
|
72
|
+
raise result["error"]
|
73
|
+
end
|
74
|
+
|
75
|
+
$redis.set("kinde_m2m_token", result["access_token"], ex: result["expires_in"].to_i)
|
76
|
+
redirect_to mgmt_path
|
77
|
+
end
|
78
|
+
|
79
|
+
def logout
|
80
|
+
redirect_to KindeSdk.logout_url, allow_other_host: true
|
81
|
+
end
|
82
|
+
|
83
|
+
def logout_callback
|
84
|
+
reset_session
|
85
|
+
redirect_to "/"
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def validate_state
|
91
|
+
# Check if nonce and state exist in session
|
92
|
+
unless session[:auth_nonce] && session[:auth_state]
|
93
|
+
Rails.logger.warn("Missing session state or nonce")
|
94
|
+
redirect_to "/", alert: "Invalid authentication state"
|
95
|
+
return
|
96
|
+
end
|
97
|
+
|
98
|
+
# Verify nonce returned matches stored nonce
|
99
|
+
returned_state = params[:state]
|
100
|
+
stored_state = session[:auth_state]
|
101
|
+
stored_url = stored_state["redirect_url"]
|
102
|
+
|
103
|
+
# Extract the state from the stored redirect_url
|
104
|
+
parsed_url = URI.parse(stored_url)
|
105
|
+
query_params = CGI.parse(parsed_url.query || "")
|
106
|
+
stored_state_from_url = query_params["state"]&.first
|
107
|
+
|
108
|
+
# Verify returned state matches the state extracted from the redirect_url
|
109
|
+
unless returned_state.present? && returned_state == stored_state_from_url
|
110
|
+
Rails.logger.warn("State validation failed: returned=#{returned_state}, expected=#{stored_state_from_url}")
|
111
|
+
redirect_to "/", alert: "Invalid authentication state"
|
112
|
+
return
|
113
|
+
end
|
114
|
+
|
115
|
+
# Optional: Check state age (e.g., expires after 15 minutes)
|
116
|
+
if Time.current.to_i - stored_state["requested_at"] > 900
|
117
|
+
Rails.logger.warn("Authentication state expired")
|
118
|
+
redirect_to "/", alert: "Authentication session expired"
|
119
|
+
return
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
def validate_nonce(id_token, original_nonce, issuer, client_id)
|
125
|
+
jwks_uri = URI.parse("#{issuer}/.well-known/jwks.json")
|
126
|
+
jwks_response = Net::HTTP.get(jwks_uri)
|
127
|
+
jwks = JSON.parse(jwks_response)
|
128
|
+
|
129
|
+
decoded_token = JWT.decode(
|
130
|
+
id_token,
|
131
|
+
nil,
|
132
|
+
true,
|
133
|
+
algorithm: 'RS256',
|
134
|
+
iss: issuer,
|
135
|
+
aud: client_id,
|
136
|
+
verify_iss: true,
|
137
|
+
verify_aud: true,
|
138
|
+
jwks: { keys: jwks['keys'] }
|
139
|
+
)
|
140
|
+
|
141
|
+
payload = decoded_token[0]
|
142
|
+
nonce_from_token = payload['nonce']
|
143
|
+
|
144
|
+
nonce_from_token == original_nonce
|
145
|
+
rescue StandardError => e
|
146
|
+
Rails.logger.error("Nonce validation error: #{e.message}")
|
147
|
+
false
|
148
|
+
end
|
149
|
+
|
150
|
+
|
151
|
+
end
|
152
|
+
end
|
data/lib/kinde_sdk/version.rb
CHANGED
data/lib/kinde_sdk.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
require "logger"
|
1
2
|
require "kinde_sdk/version"
|
2
3
|
require "kinde_sdk/configuration"
|
3
4
|
require "kinde_sdk/client/feature_flags"
|
4
5
|
require "kinde_sdk/client/permissions"
|
6
|
+
require "kinde_sdk/controllers/auth_controller"
|
5
7
|
require "kinde_sdk/client"
|
6
|
-
|
7
8
|
require 'securerandom'
|
8
9
|
require 'oauth2'
|
9
10
|
require 'pkce_challenge'
|
@@ -27,18 +28,33 @@ module KindeSdk
|
|
27
28
|
# receive url for authorization in Kinde itself
|
28
29
|
#
|
29
30
|
# @return [Hash]
|
30
|
-
def auth_url(
|
31
|
+
def auth_url(
|
32
|
+
client_id: @config.client_id,
|
33
|
+
client_secret: @config.client_secret,
|
34
|
+
domain: @config.domain,
|
35
|
+
redirect_uri: @config.callback_url,
|
36
|
+
**kwargs)
|
31
37
|
params = {
|
32
38
|
redirect_uri: redirect_uri,
|
33
39
|
state: SecureRandom.hex,
|
34
|
-
scope: @config.scope
|
40
|
+
scope: @config.scope,
|
35
41
|
}.merge(**kwargs)
|
36
|
-
return { url: @config.oauth_client
|
42
|
+
return { url: @config.oauth_client(
|
43
|
+
client_id: client_id,
|
44
|
+
client_secret: client_secret,
|
45
|
+
domain: domain,
|
46
|
+
authorize_url: "#{domain}/oauth2/auth",
|
47
|
+
token_url: "#{domain}/oauth2/token").auth_code.authorize_url(params) } unless @config.pkce_enabled
|
37
48
|
|
38
49
|
pkce_challenge = PkceChallenge.challenge(char_length: 128)
|
39
50
|
params.merge!(code_challenge_method: 'S256', code_challenge: pkce_challenge.code_challenge)
|
40
51
|
{
|
41
|
-
url: @config.oauth_client
|
52
|
+
url: @config.oauth_client(
|
53
|
+
client_id: client_id,
|
54
|
+
client_secret: client_secret,
|
55
|
+
domain: domain,
|
56
|
+
authorize_url: "#{domain}/oauth2/auth",
|
57
|
+
token_url: "#{domain}/oauth2/token").auth_code.authorize_url(params),
|
42
58
|
code_verifier: pkce_challenge.code_verifier
|
43
59
|
}
|
44
60
|
end
|
@@ -46,14 +62,34 @@ module KindeSdk
|
|
46
62
|
# when callback processor receives code, it needs to be used for fetching bearer token
|
47
63
|
#
|
48
64
|
# @return [Hash]
|
49
|
-
def fetch_tokens(
|
50
|
-
|
65
|
+
def fetch_tokens(
|
66
|
+
params_or_code,
|
67
|
+
client_id: @config.client_id,
|
68
|
+
client_secret: @config.client_secret,
|
69
|
+
domain: @config.domain,
|
70
|
+
code_verifier: nil,
|
71
|
+
redirect_uri: @config.callback_url)
|
72
|
+
code = params_or_code.kind_of?(Hash) ? params_or_code.fetch("code") : params_or_code
|
51
73
|
params = {
|
52
74
|
redirect_uri: redirect_uri,
|
53
75
|
headers: { 'User-Agent' => "Kinde-SDK: Ruby/#{KindeSdk::VERSION}" }
|
54
76
|
}
|
55
77
|
params[:code_verifier] = code_verifier if code_verifier
|
56
|
-
@config.oauth_client
|
78
|
+
token = @config.oauth_client(
|
79
|
+
client_id: client_id,
|
80
|
+
client_secret: client_secret,
|
81
|
+
domain: domain,
|
82
|
+
authorize_url: "#{domain}/oauth2/auth",
|
83
|
+
token_url: "#{domain}/oauth2/token").auth_code.get_token(code.to_s, params)
|
84
|
+
|
85
|
+
{
|
86
|
+
access_token: token.token, # The access token
|
87
|
+
id_token: token.params['id_token'], # The ID token from params
|
88
|
+
expires_at: token.expires_at, # Optional: expiration time
|
89
|
+
refresh_token: token.refresh_token, # Optional: if present
|
90
|
+
scope: token.params['scope'], # The scopes requested
|
91
|
+
token_type: token.params['token_type'] # The token type
|
92
|
+
}.compact
|
57
93
|
end
|
58
94
|
|
59
95
|
# tokens_hash #=>
|
@@ -66,39 +102,60 @@ module KindeSdk
|
|
66
102
|
#
|
67
103
|
# @return [KindeSdk::Client]
|
68
104
|
def client(tokens_hash)
|
69
|
-
sdk_api_client = api_client(tokens_hash["access_token"])
|
105
|
+
sdk_api_client = api_client(tokens_hash[:access_token] || tokens_hash["access_token"])
|
70
106
|
KindeSdk::Client.new(sdk_api_client, tokens_hash, @config.auto_refresh_tokens)
|
71
107
|
end
|
72
108
|
|
73
|
-
def logout_url
|
74
|
-
query =
|
75
|
-
host = URI::parse(
|
109
|
+
def logout_url(logout_url: @config.logout_url, domain: @config.domain)
|
110
|
+
query = logout_url ? URI.encode_www_form(redirect: logout_url) : nil
|
111
|
+
host = URI::parse(domain).host
|
76
112
|
URI::HTTP.build(host: host, path: '/logout', query: query).to_s
|
77
113
|
end
|
78
114
|
|
79
115
|
def client_credentials_access(
|
80
116
|
client_id: @config.client_id,
|
81
117
|
client_secret: @config.client_secret,
|
82
|
-
audience: "#{@config.domain}/api"
|
118
|
+
audience: "#{@config.domain}/api",
|
119
|
+
domain: @config.domain
|
83
120
|
)
|
84
|
-
Faraday.new(url:
|
121
|
+
Faraday.new(url: domain) do |faraday|
|
85
122
|
faraday.response :json
|
86
123
|
faraday.use Faraday::FollowRedirects::Middleware
|
87
124
|
end
|
88
|
-
.post(
|
125
|
+
.post("#{domain}/oauth2/token") do |req|
|
89
126
|
req.headers[:content_type] = 'application/x-www-form-urlencoded'
|
90
127
|
req.body =
|
91
128
|
"grant_type=client_credentials&client_id=#{client_id}&client_secret=#{client_secret}&audience=#{audience}"
|
92
129
|
end.body
|
93
130
|
end
|
94
131
|
|
95
|
-
def token_expired?(hash
|
96
|
-
|
132
|
+
def token_expired?(hash,
|
133
|
+
client_id: @config.client_id,
|
134
|
+
client_secret: @config.client_secret,
|
135
|
+
audience: "#{@config.domain}/api",
|
136
|
+
domain: @config.domain
|
137
|
+
)
|
138
|
+
OAuth2::AccessToken.from_hash(@config.oauth_client(
|
139
|
+
client_id: client_id,
|
140
|
+
client_secret: client_secret,
|
141
|
+
domain: domain,
|
142
|
+
authorize_url: "#{domain}/oauth2/auth",
|
143
|
+
token_url: "#{domain}/oauth2/token"), hash).expired?
|
97
144
|
end
|
98
145
|
|
99
146
|
# @return [Hash]
|
100
|
-
def refresh_token(hash
|
101
|
-
|
147
|
+
def refresh_token(hash,
|
148
|
+
client_id: @config.client_id,
|
149
|
+
client_secret: @config.client_secret,
|
150
|
+
audience: "#{@config.domain}/api",
|
151
|
+
domain: @config.domain
|
152
|
+
)
|
153
|
+
OAuth2::AccessToken.from_hash(@config.oauth_client(
|
154
|
+
client_id: client_id,
|
155
|
+
client_secret: client_secret,
|
156
|
+
domain: domain,
|
157
|
+
authorize_url: "#{domain}/oauth2/auth",
|
158
|
+
token_url: "#{domain}/oauth2/token"), hash).refresh.to_hash
|
102
159
|
end
|
103
160
|
|
104
161
|
# init sdk api client by bearer token
|
data/spec/kinde_sdk_spec.rb
CHANGED
@@ -74,20 +74,20 @@ describe KindeSdk do
|
|
74
74
|
)
|
75
75
|
.to_return(
|
76
76
|
status: 200,
|
77
|
-
body: { "access_token": "eyJ", "expires_in": 86399, "scope": "", "token_type": "bearer" }.to_json,
|
77
|
+
body: { "access_token": "eyJ", "id_token": "test", "refresh_token": "test","expires_in": 86399, "scope": "", "token_type": "bearer" }.to_json,
|
78
78
|
headers: { "content-type" => "application/json;charset=UTF-8" }
|
79
79
|
)
|
80
80
|
end
|
81
81
|
|
82
82
|
it "calls /token url with proper body and headers" do
|
83
|
-
expect(described_class.fetch_tokens(code).keys).to eq(%w[
|
83
|
+
expect(described_class.fetch_tokens(code).keys.map(&:to_s)).to eq(%w[access_token id_token expires_at refresh_token scope token_type])
|
84
84
|
end
|
85
85
|
|
86
86
|
context "with redefined callback_url" do
|
87
87
|
let(:callback_url) { "another-callback" }
|
88
88
|
|
89
89
|
it "calls /token url with proper body and headers" do
|
90
|
-
expect(described_class.fetch_tokens(code).keys.size).to eq(
|
90
|
+
expect(described_class.fetch_tokens(code).keys.size).to eq(6)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kinde_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kinde Australia Pty Ltd
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -76,22 +76,22 @@ dependencies:
|
|
76
76
|
name: rspec
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: 3.6.0
|
82
79
|
- - "~>"
|
83
80
|
- !ruby/object:Gem::Version
|
84
81
|
version: '3.6'
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 3.6.0
|
85
85
|
type: :development
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: 3.6.0
|
92
89
|
- - "~>"
|
93
90
|
- !ruby/object:Gem::Version
|
94
91
|
version: '3.6'
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 3.6.0
|
95
95
|
description: Integrate the Kinde API into any ruby-based applications, Rails or non-Rails
|
96
96
|
email:
|
97
97
|
- support@kinde.com
|
@@ -422,6 +422,7 @@ files:
|
|
422
422
|
- lib/kinde_sdk/client/feature_flags.rb
|
423
423
|
- lib/kinde_sdk/client/permissions.rb
|
424
424
|
- lib/kinde_sdk/configuration.rb
|
425
|
+
- lib/kinde_sdk/controllers/auth_controller.rb
|
425
426
|
- lib/kinde_sdk/version.rb
|
426
427
|
- spec/kinde_sdk_spec.rb
|
427
428
|
- spec/spec_helper.rb
|
@@ -429,7 +430,7 @@ homepage: https://kinde.com/
|
|
429
430
|
licenses:
|
430
431
|
- MIT
|
431
432
|
metadata: {}
|
432
|
-
post_install_message:
|
433
|
+
post_install_message:
|
433
434
|
rdoc_options: []
|
434
435
|
require_paths:
|
435
436
|
- lib
|
@@ -445,116 +446,116 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
445
446
|
- !ruby/object:Gem::Version
|
446
447
|
version: '0'
|
447
448
|
requirements: []
|
448
|
-
rubygems_version: 3.
|
449
|
-
signing_key:
|
449
|
+
rubygems_version: 3.2.3
|
450
|
+
signing_key:
|
450
451
|
specification_version: 4
|
451
452
|
summary: Kinde Management API Ruby Gem
|
452
453
|
test_files:
|
453
454
|
- spec/kinde_sdk_spec.rb
|
454
455
|
- spec/spec_helper.rb
|
455
|
-
- kinde_api/spec/api/permissions_api_spec.rb
|
456
|
-
- kinde_api/spec/api/o_auth_api_spec.rb
|
457
|
-
- kinde_api/spec/api/organizations_api_spec.rb
|
458
|
-
- kinde_api/spec/api/business_api_spec.rb
|
459
|
-
- kinde_api/spec/api/applications_api_spec.rb
|
460
456
|
- kinde_api/spec/api/subscribers_api_spec.rb
|
461
|
-
- kinde_api/spec/api/
|
462
|
-
- kinde_api/spec/api/connected_apps_api_spec.rb
|
457
|
+
- kinde_api/spec/api/apis_api_spec.rb
|
463
458
|
- kinde_api/spec/api/callbacks_api_spec.rb
|
464
459
|
- kinde_api/spec/api/environments_api_spec.rb
|
465
|
-
- kinde_api/spec/api/apis_api_spec.rb
|
466
|
-
- kinde_api/spec/api/roles_api_spec.rb
|
467
|
-
- kinde_api/spec/api/users_api_spec.rb
|
468
460
|
- kinde_api/spec/api/feature_flags_api_spec.rb
|
461
|
+
- kinde_api/spec/api/roles_api_spec.rb
|
469
462
|
- kinde_api/spec/api/industries_api_spec.rb
|
463
|
+
- kinde_api/spec/api/permissions_api_spec.rb
|
464
|
+
- kinde_api/spec/api/timezones_api_spec.rb
|
465
|
+
- kinde_api/spec/api/business_api_spec.rb
|
466
|
+
- kinde_api/spec/api/users_api_spec.rb
|
467
|
+
- kinde_api/spec/api/applications_api_spec.rb
|
468
|
+
- kinde_api/spec/api/o_auth_api_spec.rb
|
469
|
+
- kinde_api/spec/api/organizations_api_spec.rb
|
470
|
+
- kinde_api/spec/api/connected_apps_api_spec.rb
|
470
471
|
- kinde_api/spec/api_client_spec.rb
|
471
472
|
- kinde_api/spec/configuration_spec.rb
|
472
|
-
- kinde_api/spec/models/
|
473
|
-
- kinde_api/spec/models/
|
474
|
-
- kinde_api/spec/models/
|
475
|
-
- kinde_api/spec/models/
|
476
|
-
- kinde_api/spec/models/
|
477
|
-
- kinde_api/spec/models/apis_spec.rb
|
478
|
-
- kinde_api/spec/models/users_response_users_inner_spec.rb
|
479
|
-
- kinde_api/spec/models/create_organization_request_spec.rb
|
480
|
-
- kinde_api/spec/models/api_applications_inner_spec.rb
|
481
|
-
- kinde_api/spec/models/get_redirect_callback_urls_response_spec.rb
|
482
|
-
- kinde_api/spec/models/get_organizations_user_roles_response_spec.rb
|
483
|
-
- kinde_api/spec/models/error_response_spec.rb
|
484
|
-
- kinde_api/spec/models/get_organizations_response_spec.rb
|
485
|
-
- kinde_api/spec/models/permissions_spec.rb
|
486
|
-
- kinde_api/spec/models/subscribers_subscriber_spec.rb
|
487
|
-
- kinde_api/spec/models/get_organizations_user_permissions_response_spec.rb
|
473
|
+
- kinde_api/spec/models/create_organization_response_organization_spec.rb
|
474
|
+
- kinde_api/spec/models/organization_user_permission_spec.rb
|
475
|
+
- kinde_api/spec/models/create_organization_user_role_request_spec.rb
|
476
|
+
- kinde_api/spec/models/create_permission_request_spec.rb
|
477
|
+
- kinde_api/spec/models/update_organization_users_response_spec.rb
|
488
478
|
- kinde_api/spec/models/logout_redirect_urls_spec.rb
|
489
479
|
- kinde_api/spec/models/api_result_spec.rb
|
490
|
-
- kinde_api/spec/models/
|
491
|
-
- kinde_api/spec/models/
|
492
|
-
- kinde_api/spec/models/
|
493
|
-
- kinde_api/spec/models/
|
480
|
+
- kinde_api/spec/models/add_organization_users_response_spec.rb
|
481
|
+
- kinde_api/spec/models/create_application_request_spec.rb
|
482
|
+
- kinde_api/spec/models/redirect_callback_urls_spec.rb
|
483
|
+
- kinde_api/spec/models/organization_spec.rb
|
484
|
+
- kinde_api/spec/models/replace_redirect_callback_urls_request_spec.rb
|
485
|
+
- kinde_api/spec/models/users_response_spec.rb
|
486
|
+
- kinde_api/spec/models/role_spec.rb
|
494
487
|
- kinde_api/spec/models/user_identity_spec.rb
|
495
|
-
- kinde_api/spec/models/
|
496
|
-
- kinde_api/spec/models/
|
488
|
+
- kinde_api/spec/models/update_role_permissions_request_permissions_inner_spec.rb
|
489
|
+
- kinde_api/spec/models/connected_apps_access_token_spec.rb
|
490
|
+
- kinde_api/spec/models/update_organization_users_request_spec.rb
|
491
|
+
- kinde_api/spec/models/get_applications_response_spec.rb
|
492
|
+
- kinde_api/spec/models/update_user_request_spec.rb
|
493
|
+
- kinde_api/spec/models/create_user_request_profile_spec.rb
|
497
494
|
- kinde_api/spec/models/get_environment_feature_flags_response_spec.rb
|
498
|
-
- kinde_api/spec/models/
|
499
|
-
- kinde_api/spec/models/
|
500
|
-
- kinde_api/spec/models/
|
501
|
-
- kinde_api/spec/models/
|
502
|
-
- kinde_api/spec/models/
|
503
|
-
- kinde_api/spec/models/get_organization_feature_flags_response_spec.rb
|
504
|
-
- kinde_api/spec/models/roles_spec.rb
|
505
|
-
- kinde_api/spec/models/get_organization_users_response_spec.rb
|
506
|
-
- kinde_api/spec/models/organization_user_spec.rb
|
507
|
-
- kinde_api/spec/models/organization_user_role_permissions_spec.rb
|
508
|
-
- kinde_api/spec/models/create_organization_user_permission_request_spec.rb
|
509
|
-
- kinde_api/spec/models/users_response_spec.rb
|
510
|
-
- kinde_api/spec/models/organization_spec.rb
|
495
|
+
- kinde_api/spec/models/subscribers_subscriber_spec.rb
|
496
|
+
- kinde_api/spec/models/get_organizations_response_spec.rb
|
497
|
+
- kinde_api/spec/models/create_user_request_identities_inner_spec.rb
|
498
|
+
- kinde_api/spec/models/api_spec.rb
|
499
|
+
- kinde_api/spec/models/get_application_response_application_spec.rb
|
511
500
|
- kinde_api/spec/models/subscriber_spec.rb
|
512
|
-
- kinde_api/spec/models/update_api_applications_request_spec.rb
|
513
|
-
- kinde_api/spec/models/create_organization_user_role_request_spec.rb
|
514
|
-
- kinde_api/spec/models/create_application_request_spec.rb
|
515
|
-
- kinde_api/spec/models/update_user_response_spec.rb
|
516
|
-
- kinde_api/spec/models/add_organization_users_request_spec.rb
|
517
|
-
- kinde_api/spec/models/update_role_permissions_request_permissions_inner_spec.rb
|
518
501
|
- kinde_api/spec/models/connected_apps_auth_url_spec.rb
|
519
|
-
- kinde_api/spec/models/update_organization_users_response_spec.rb
|
520
502
|
- kinde_api/spec/models/add_apis_request_spec.rb
|
521
|
-
- kinde_api/spec/models/
|
503
|
+
- kinde_api/spec/models/create_user_request_identities_inner_details_spec.rb
|
504
|
+
- kinde_api/spec/models/organization_user_spec.rb
|
505
|
+
- kinde_api/spec/models/roles_spec.rb
|
506
|
+
- kinde_api/spec/models/get_subscriber_response_spec.rb
|
507
|
+
- kinde_api/spec/models/roles_permission_response_inner_spec.rb
|
508
|
+
- kinde_api/spec/models/apis_spec.rb
|
509
|
+
- kinde_api/spec/models/create_application_response_application_spec.rb
|
510
|
+
- kinde_api/spec/models/update_application_request_spec.rb
|
511
|
+
- kinde_api/spec/models/get_organizations_user_permissions_response_spec.rb
|
512
|
+
- kinde_api/spec/models/update_environement_feature_flag_override_request_spec.rb
|
522
513
|
- kinde_api/spec/models/create_feature_flag_request_spec.rb
|
523
514
|
- kinde_api/spec/models/update_roles_request_spec.rb
|
524
|
-
- kinde_api/spec/models/
|
525
|
-
- kinde_api/spec/models/create_user_request_profile_spec.rb
|
526
|
-
- kinde_api/spec/models/redirect_callback_urls_spec.rb
|
515
|
+
- kinde_api/spec/models/token_introspect_spec.rb
|
527
516
|
- kinde_api/spec/models/get_permissions_response_spec.rb
|
528
|
-
- kinde_api/spec/models/
|
529
|
-
- kinde_api/spec/models/
|
530
|
-
- kinde_api/spec/models/
|
531
|
-
- kinde_api/spec/models/
|
517
|
+
- kinde_api/spec/models/create_organization_user_permission_request_spec.rb
|
518
|
+
- kinde_api/spec/models/update_role_permissions_request_spec.rb
|
519
|
+
- kinde_api/spec/models/create_user_response_spec.rb
|
520
|
+
- kinde_api/spec/models/user_profile_v2_spec.rb
|
521
|
+
- kinde_api/spec/models/token_error_response_spec.rb
|
522
|
+
- kinde_api/spec/models/update_api_applications_request_applications_inner_spec.rb
|
523
|
+
- kinde_api/spec/models/get_redirect_callback_urls_response_spec.rb
|
532
524
|
- kinde_api/spec/models/get_organization_feature_flags_response_feature_flags_value_spec.rb
|
533
|
-
- kinde_api/spec/models/get_application_response_spec.rb
|
534
|
-
- kinde_api/spec/models/create_subscriber_success_response_spec.rb
|
535
|
-
- kinde_api/spec/models/connected_apps_access_token_spec.rb
|
536
|
-
- kinde_api/spec/models/create_organization_response_spec.rb
|
537
|
-
- kinde_api/spec/models/create_organization_response_organization_spec.rb
|
538
|
-
- kinde_api/spec/models/create_permission_request_spec.rb
|
539
|
-
- kinde_api/spec/models/update_organization_request_spec.rb
|
540
|
-
- kinde_api/spec/models/update_application_request_spec.rb
|
541
|
-
- kinde_api/spec/models/get_applications_response_spec.rb
|
542
525
|
- kinde_api/spec/models/organization_user_permission_roles_inner_spec.rb
|
543
|
-
- kinde_api/spec/models/update_organization_users_request_users_inner_spec.rb
|
544
|
-
- kinde_api/spec/models/add_organization_users_response_spec.rb
|
545
|
-
- kinde_api/spec/models/get_roles_response_spec.rb
|
546
|
-
- kinde_api/spec/models/create_user_response_spec.rb
|
547
|
-
- kinde_api/spec/models/update_role_permissions_response_spec.rb
|
548
|
-
- kinde_api/spec/models/replace_redirect_callback_urls_request_spec.rb
|
549
|
-
- kinde_api/spec/models/user_spec.rb
|
550
|
-
- kinde_api/spec/models/role_spec.rb
|
551
526
|
- kinde_api/spec/models/success_response_spec.rb
|
527
|
+
- kinde_api/spec/models/get_organization_feature_flags_response_spec.rb
|
528
|
+
- kinde_api/spec/models/permissions_spec.rb
|
552
529
|
- kinde_api/spec/models/organization_user_role_spec.rb
|
553
|
-
- kinde_api/spec/models/
|
554
|
-
- kinde_api/spec/models/
|
555
|
-
- kinde_api/spec/models/
|
530
|
+
- kinde_api/spec/models/organization_user_role_permissions_spec.rb
|
531
|
+
- kinde_api/spec/models/error_response_spec.rb
|
532
|
+
- kinde_api/spec/models/get_organization_users_response_spec.rb
|
533
|
+
- kinde_api/spec/models/organization_user_role_permissions_permissions_spec.rb
|
534
|
+
- kinde_api/spec/models/error_spec.rb
|
535
|
+
- kinde_api/spec/models/create_role_request_spec.rb
|
536
|
+
- kinde_api/spec/models/update_user_response_spec.rb
|
556
537
|
- kinde_api/spec/models/add_organization_users_request_users_inner_spec.rb
|
557
|
-
- kinde_api/spec/models/
|
538
|
+
- kinde_api/spec/models/replace_logout_redirect_urls_request_spec.rb
|
539
|
+
- kinde_api/spec/models/user_spec.rb
|
540
|
+
- kinde_api/spec/models/create_application_response_spec.rb
|
541
|
+
- kinde_api/spec/models/create_organization_response_spec.rb
|
558
542
|
- kinde_api/spec/models/get_subscribers_response_spec.rb
|
559
|
-
- kinde_api/spec/models/
|
543
|
+
- kinde_api/spec/models/get_application_response_spec.rb
|
544
|
+
- kinde_api/spec/models/applications_spec.rb
|
545
|
+
- kinde_api/spec/models/update_role_permissions_response_spec.rb
|
546
|
+
- kinde_api/spec/models/update_api_applications_request_spec.rb
|
547
|
+
- kinde_api/spec/models/create_organization_request_spec.rb
|
548
|
+
- kinde_api/spec/models/api_applications_inner_spec.rb
|
549
|
+
- kinde_api/spec/models/update_organization_users_request_users_inner_spec.rb
|
550
|
+
- kinde_api/spec/models/user_profile_spec.rb
|
551
|
+
- kinde_api/spec/models/users_response_users_inner_spec.rb
|
552
|
+
- kinde_api/spec/models/create_subscriber_success_response_spec.rb
|
553
|
+
- kinde_api/spec/models/create_subscriber_success_response_subscriber_spec.rb
|
554
|
+
- kinde_api/spec/models/user_identity_result_spec.rb
|
555
|
+
- kinde_api/spec/models/get_roles_response_spec.rb
|
556
|
+
- kinde_api/spec/models/create_user_request_spec.rb
|
557
|
+
- kinde_api/spec/models/update_organization_request_spec.rb
|
558
|
+
- kinde_api/spec/models/get_organizations_user_roles_response_spec.rb
|
559
|
+
- kinde_api/spec/models/user_identities_inner_spec.rb
|
560
|
+
- kinde_api/spec/models/add_organization_users_request_spec.rb
|
560
561
|
- kinde_api/spec/spec_helper.rb
|