class RailsSso::App

Attributes

provider_client[R]
session[R]
strategy[R]

Public Class Methods

new(strategy, session, provider_client) click to toggle source
# File lib/rails_sso/app.rb, line 5
def initialize(strategy, session, provider_client)
  @strategy, @session, @provider_client = strategy, session, provider_client
end

Public Instance Methods

access_token() click to toggle source
# File lib/rails_sso/app.rb, line 32
def access_token
  return token_mock if RailsSso.config.test_mode?

  OAuth2::AccessToken.new(strategy.client, session[:access_token], {
    refresh_token: session[:refresh_token]
  })
end
fetch_user_data() click to toggle source
# File lib/rails_sso/app.rb, line 9
def fetch_user_data
  FetchUser.new(provider_client.token!(current_access_token_value)).call
rescue ResponseError => e
  refresh_access_token! do
    FetchUser.new(provider_client.token!(current_access_token_value)).call
  end if e.code == :unauthenticated
end
invalidate_access_token!() click to toggle source
# File lib/rails_sso/app.rb, line 40
def invalidate_access_token!
  if RailsSso.config.provider_sign_out_path
    access_token.delete(RailsSso.config.provider_sign_out_path)
  end
end
refresh_access_token!() { || ... } click to toggle source
# File lib/rails_sso/app.rb, line 17
def refresh_access_token!
  save_access_token!(access_token.refresh!)

  yield if block_given?
rescue ::OAuth2::Error
  nil
rescue ResponseError => e
  nil if e.code == :unauthenticated
end
save_access_token!(access_token) click to toggle source
# File lib/rails_sso/app.rb, line 27
def save_access_token!(access_token)
  session[:access_token] = access_token.token
  session[:refresh_token] = access_token.refresh_token
end

Private Instance Methods

current_access_token_mock() click to toggle source
# File lib/rails_sso/app.rb, line 52
def current_access_token_mock
  if RailsSso.config.test_mode?
    token_mock.token
  end
end
current_access_token_value() click to toggle source
# File lib/rails_sso/app.rb, line 48
def current_access_token_value
  session[:access_token] or current_access_token_mock
end
token_mock() click to toggle source
# File lib/rails_sso/app.rb, line 58
def token_mock
  @token_mock ||= RailsSso::TokenMock.new
end