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