class DeviseCasAuthenticatable::SingleSignOut::StoreSessionId

Constants

CAS_LAST_TICKET
CAS_TICKET_STORE

Public Class Methods

new(app) click to toggle source
# File lib/devise_cas_authenticatable/single_sign_out/rack.rb, line 8
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/devise_cas_authenticatable/single_sign_out/rack.rb, line 12
def call(env)
  store_session_id_for_cas_ticket(env)
  @app.call(env)
end

Private Instance Methods

store_session_id_for_cas_ticket(env) click to toggle source
# File lib/devise_cas_authenticatable/single_sign_out/rack.rb, line 18
def store_session_id_for_cas_ticket(env)
  request = Rack::Request.new(env)
  session = request.session

  if session.respond_to?(:id)
    # Rack > 1.5
    session_id = session.id
  else
    # Compatible with old Rack requests
    session_id = env['rack.session.options'][:id]
  end
  cas_ticket_store = session[CAS_TICKET_STORE]

  if cas_ticket_store
    Rails.logger.info "Storing Session ID #{session_id} for ticket #{session[CAS_LAST_TICKET]}"
    ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.store_session_id_for_index(session[CAS_LAST_TICKET], session_id)
    session[CAS_TICKET_STORE] = false
  end
end