Sha256: ef77fed70306e236a3d01f56cd0ae0f70cf498218d128d4c6846036e2599bae0

Contents?: true

Size: 1.44 KB

Versions: 53

Compression:

Stored size: 1.44 KB

Contents

require 'openid_connect'

module ForestLiana
  class OidcClientManager
    def self.get_client_for_callback_url(callback_url)
      begin
        configuration = ForestLiana::OidcConfigurationRetriever.retrieve()
        if ForestLiana.forest_client_id.nil?
          client_data = Rails.cache.read("#{callback_url}-#{ForestLiana.env_secret}-client-data") || nil
          if client_data.nil?
            client_credentials = ForestLiana::OidcDynamicClientRegistrator.register({
              token_endpoint_auth_method: 'none',
              redirect_uris: [callback_url],
              registration_endpoint: configuration['registration_endpoint']
            })
            client_data = { :client_id => client_credentials['client_id'], :issuer => configuration['issuer'] }
            Rails.cache.write("#{callback_url}-#{ForestLiana.env_secret}-client-data", client_data)
          end
        else
          client_data = { :client_id => ForestLiana.forest_client_id, :issuer => configuration['issuer'] }
        end

        OpenIDConnect::Client.new(
          identifier: client_data[:client_id],
          redirect_uri: callback_url,
          host: "#{client_data[:issuer].sub(/^https?\:\/\/(www.)?/,'')}",
          authorization_endpoint: '/oidc/auth',
          token_endpoint: '/oidc/token',
        )
      rescue => error
        Rails.cache.delete("#{callback_url}-#{ForestLiana.env_secret}-client-data")
        raise error
      end
    end
  end
end

Version data entries

53 entries across 53 versions & 1 rubygems

Version Path
forest_liana-7.6.14 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.13 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.12 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.11 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.10 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.9 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.8 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.7 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.6 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.5 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.4 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.3 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.2 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.1 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.6.0 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.5.1 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.5.0 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.4.5 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.4.4 app/services/forest_liana/oidc_client_manager.rb
forest_liana-7.4.3 app/services/forest_liana/oidc_client_manager.rb