Module: Sso::Doorkeeper::ApplicationControllerMixin

Extended by:
ActiveSupport::Concern
Includes:
Logging
Defined in:
lib/sso/doorkeeper/application_controller_mixin.rb

Instance Method Summary collapse

Methods included from Logging

#debug, #error, #fatal, #info, #warn

Instance Method Details

#access_grant_created(token_id) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/sso/doorkeeper/application_controller_mixin.rb', line 21

def access_grant_created(token_id)
  debug { "Wisper#access_grant_created grant - #{token_id}" }
  oauth_grant = ::Doorkeeper::AccessGrant.find(token_id)

  generate_sso_session if warden_user_session["sso_session_id"].blank?
  sso_session = Sso::Session.find(warden_user_session["sso_session_id"])

  debug { "Sso::Session.update_master_with_grant - #{sso_session.id.inspect}, #{oauth_grant.inspect}" }
  sso_session.clients.find_or_create_by!(access_grant_id: oauth_grant.id, application_id: oauth_grant.application_id)
rescue => e
  sso_session.try(:logout)
  raise
end

#generate_sso_sessionObject



35
36
37
38
39
40
# File 'lib/sso/doorkeeper/application_controller_mixin.rb', line 35

def generate_sso_session
  debug { "Sso:Session doesn't exist for user #{user.id.inspect}. Generate new one" }
  attributes = {  ip: request.ip, agent: request.user_agent }
  sso_session = Sso::Session.generate_master(user, attributes)
  warden_user_session["sso_session_id"] = sso_session.id.to_s
end

#subscribe_to_grant_creationObject



11
12
13
14
15
# File 'lib/sso/doorkeeper/application_controller_mixin.rb', line 11

def subscribe_to_grant_creation
  Wisper.subscribe(self) do
    yield
  end
end

#warden_user_sessionObject



17
18
19
# File 'lib/sso/doorkeeper/application_controller_mixin.rb', line 17

def warden_user_session
  warden.session(:user)
end