Module: DeviseCasAuthenticatable::SingleSignOut::DestroySession
- Included in:
- Devise::CasSessionsController
- Defined in:
- lib/devise_cas_authenticatable/single_sign_out.rb
Overview
Supports destroying sessions by ID for ActiveRecord and Redis session stores
Instance Method Summary collapse
Instance Method Details
#current_session_store ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/devise_cas_authenticatable/single_sign_out.rb', line 27 def current_session_store app = Rails.application.app begin app = (app.instance_variable_get(:@backend) || app.instance_variable_get(:@app)) end until app.nil? or app.class == session_store_class app end |
#destroy_session_by_id(sid) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/devise_cas_authenticatable/single_sign_out.rb', line 35 def destroy_session_by_id(sid) logger.debug "Single Sign Out from session store: #{current_session_store.inspect}" if session_store_class.name =~ /ActiveRecord::SessionStore/ session = session_store_class::Session.find_by_session_id(sid) session.destroy if session true elsif session_store_class.name =~ /Redis/ current_session_store.instance_variable_get(:@pool).del(sid) true elsif session_store_class.name =~ /CacheStore/ current_session_store.destroy_session({}, sid, {}) true else logger.error "Cannot process logout request because this Rails application's session store is "+ " #{current_session_store.name.inspect} and is not a support session store type for Single Sign-Out." false end end |
#session_store_class ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/devise_cas_authenticatable/single_sign_out.rb', line 10 def session_store_class @session_store_class ||= begin # Rails 3 & 4 session store if ::DeviseCasAuthenticatable::SingleSignOut.rails3_or_greater? Rails.configuration.session_store ::Rails.application.config.session_store else # => Rails 2 ActionController::Base.session_store end rescue NameError => e # for older versions of Rails (prior to 2.3) ActionController::Base.[:database_manager] end end |