Module: GoSso

Defined in:
lib/go_sso.rb,
lib/go_sso/engine.rb,
lib/go_sso/version.rb,
lib/go_sso/middleware.rb,
lib/go_sso/controllers/helpers.rb,
app/jobs/go_sso/application_job.rb,
app/helpers/go_sso/application_helper.rb,
app/mailers/go_sso/application_mailer.rb,
app/controllers/go_sso/application_controller.rb

Defined Under Namespace

Modules: ApplicationHelper, Controllers Classes: ApplicationController, ApplicationJob, ApplicationMailer, Current, Engine, FailedToOpenConnection, Middleware, User

Constant Summary collapse

VERSION =
'0.4.1'

Class Method Summary collapse

Class Method Details

.authorize_urlObject



42
43
44
# File 'lib/go_sso.rb', line 42

def self.authorize_url
  client.auth_code.authorize_url(redirect_uri: Rails.application.routes.url_helpers.go_sso_callback_url(host: current_host))
end

.clientObject



38
39
40
# File 'lib/go_sso.rb', line 38

def self.client
  @client ||= OAuth2::Client.new(client_id, client_secret, site: site)
end

.current_hostObject



50
51
52
# File 'lib/go_sso.rb', line 50

def self.current_host
  host || Current.host
end

.generate_fake_tokenObject



69
70
71
# File 'lib/go_sso.rb', line 69

def self.generate_fake_token
  OAuth2::AccessToken.new(client, SecureRandom.urlsafe_base64, expires_in: 2.hours)
end

.get_token(code) ⇒ Object



46
47
48
# File 'lib/go_sso.rb', line 46

def self.get_token(code)
  client.auth_code.get_token(code, redirect_uri: Rails.application.routes.url_helpers.go_sso_callback_url(host: current_host))
end

.get_user_json(token = nil) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/go_sso.rb', line 54

def self.get_user_json(token = nil)
  return fake_user_json.as_json if test_mode?
  o_token = OAuth2::AccessToken.new(client, token)
  json_str = Rails.cache.fetch([:go_sso_user, token], expires_in: user_cache_ttl) do
    o_token.get(GoSso.user_json_url).body
  end
  JSON.parse(json_str)
rescue Faraday::ConnectionFailed
  raise GoSso::FailedToOpenConnection
end

.set_default_options!Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/go_sso.rb', line 27

def self.set_default_options!
  self.client_id = ENV['GO_SSO_CLIENT_ID']
  self.client_secret = ENV['GO_SSO_CLIENT_SECRET']
  self.site = ENV['GO_SSO_CLIENT_SITE']
  self.main_app_module_name = if Rails::VERSION::MAJOR == 6
    Rails.application.class.module_parent.to_s
  else
    Rails.application.class.parent.to_s
  end
end

.setup {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (GoSso)

    the object that the method was called on



23
24
25
# File 'lib/go_sso.rb', line 23

def self.setup
  yield self
end

.test_mode?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/go_sso.rb', line 65

def self.test_mode?
  fake_user_json.present?
end