Module: KindeSdk
- Defined in:
- lib/kinde_sdk.rb,
lib/kinde_sdk/client.rb,
lib/kinde_sdk/version.rb,
lib/kinde_sdk/configuration.rb,
lib/kinde_sdk/client/permissions.rb,
lib/kinde_sdk/client/feature_flags.rb
Defined Under Namespace
Classes: Client, Configuration
Constant Summary collapse
- VERSION =
"1.2.1"
Class Attribute Summary collapse
-
.config ⇒ Object
Returns the value of attribute config.
Class Method Summary collapse
-
.api_client(bearer_token) ⇒ KindeApi::ApiClient
init sdk api client by bearer token.
-
.auth_url(redirect_uri: @config.callback_url, **kwargs) ⇒ Hash
receive url for authorization in Kinde itself.
-
.client(tokens_hash) ⇒ KindeSdk::Client
tokens_hash #=> “expires_in”=>86399, “id_token”=>“eyJhbGciOiJSUz”, “refresh_token”=>“eyJhbGciOiJSUz”, “scope”=>“openid offline email profile”, “token_type”=>“bearer”.
- .client_credentials_access(client_id: @config.client_id, client_secret: @config.client_secret, audience: "#{@config.domain}/api") ⇒ Object
- .configure ⇒ Object
-
.fetch_tokens(params_or_code, code_verifier: nil, redirect_uri: @config.callback_url) ⇒ Hash
when callback processor receives code, it needs to be used for fetching bearer token.
- .logout_url ⇒ Object
- .refresh_token(hash) ⇒ Hash
- .token_expired?(hash) ⇒ Boolean
Class Attribute Details
.config ⇒ Object
Returns the value of attribute config.
15 16 17 |
# File 'lib/kinde_sdk.rb', line 15 def config @config end |
Class Method Details
.api_client(bearer_token) ⇒ KindeApi::ApiClient
init sdk api client by bearer token
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/kinde_sdk.rb', line 107 def api_client(bearer_token) config = KindeApi::Configuration.default config.configure do |c| c.access_token = bearer_token c.host = @config.domain c.debugging = @config.debugging c.logger = @config.logger c.scheme = url_scheme(c.scheme) end KindeApi::ApiClient.new(config) end |
.auth_url(redirect_uri: @config.callback_url, **kwargs) ⇒ Hash
receive url for authorization in Kinde itself
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/kinde_sdk.rb', line 30 def auth_url(redirect_uri: @config.callback_url, **kwargs) params = { redirect_uri: redirect_uri, state: SecureRandom.hex, scope: @config.scope }.merge(**kwargs) return { url: @config.oauth_client.auth_code.(params) } unless @config.pkce_enabled pkce_challenge = PkceChallenge.challenge(char_length: 128) params.merge!(code_challenge_method: 'S256', code_challenge: pkce_challenge.code_challenge) { url: @config.oauth_client.auth_code.(params), code_verifier: pkce_challenge.code_verifier } end |
.client(tokens_hash) ⇒ KindeSdk::Client
tokens_hash #=>
"expires_in"=>86399,
"id_token"=>"eyJhbGciOiJSUz",
"refresh_token"=>"eyJhbGciOiJSUz",
"scope"=>"openid offline email profile",
"token_type"=>"bearer"
68 69 70 71 |
# File 'lib/kinde_sdk.rb', line 68 def client(tokens_hash) sdk_api_client = api_client(tokens_hash["access_token"]) KindeSdk::Client.new(sdk_api_client, tokens_hash, @config.auto_refresh_tokens) end |
.client_credentials_access(client_id: @config.client_id, client_secret: @config.client_secret, audience: "#{@config.domain}/api") ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/kinde_sdk.rb', line 79 def client_credentials_access( client_id: @config.client_id, client_secret: @config.client_secret, audience: "#{@config.domain}/api" ) Faraday.new(url: @config.domain) do |faraday| faraday.response :json faraday.use Faraday::FollowRedirects::Middleware end .post(@config.token_url) do |req| req.headers[:content_type] = 'application/x-www-form-urlencoded' req.body = "grant_type=client_credentials&client_id=#{client_id}&client_secret=#{client_secret}&audience=#{audience}" end.body end |
.configure ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/kinde_sdk.rb', line 17 def configure if block_given? yield(Configuration.default) else Configuration.default end @config = Configuration.default end |
.fetch_tokens(params_or_code, code_verifier: nil, redirect_uri: @config.callback_url) ⇒ Hash
when callback processor receives code, it needs to be used for fetching bearer token
49 50 51 52 53 54 55 56 57 |
# File 'lib/kinde_sdk.rb', line 49 def fetch_tokens(params_or_code, code_verifier: nil, redirect_uri: @config.callback_url) code = params_or_code.kind_of?(Hash) ? params.fetch("code") : params_or_code params = { redirect_uri: redirect_uri, headers: { 'User-Agent' => "Kinde-SDK: Ruby/#{KindeSdk::VERSION}" } } params[:code_verifier] = code_verifier if code_verifier @config.oauth_client.auth_code.get_token(code.to_s, params).to_hash end |
.logout_url ⇒ Object
73 74 75 76 77 |
# File 'lib/kinde_sdk.rb', line 73 def logout_url query = @config.logout_url ? URI.encode_www_form(redirect: @config.logout_url) : nil host = URI::parse(@config.domain).host URI::HTTP.build(host: host, path: '/logout', query: query).to_s end |
.refresh_token(hash) ⇒ Hash
100 101 102 |
# File 'lib/kinde_sdk.rb', line 100 def refresh_token(hash) OAuth2::AccessToken.from_hash(@config.oauth_client, hash).refresh.to_hash end |
.token_expired?(hash) ⇒ Boolean
95 96 97 |
# File 'lib/kinde_sdk.rb', line 95 def token_expired?(hash) OAuth2::AccessToken.from_hash(@config.oauth_client, hash).expired? end |