Sha256: 24a9f6e8d251ac756b6a45e87f68220a0072f554f39dd1d89875d1611603431a

Contents?: true

Size: 1.09 KB

Versions: 22

Compression:

Stored size: 1.09 KB

Contents

module DeviseCasAuthenticatable
  module SingleSignOut

    class StoreSessionId
      CAS_TICKET_STORE = 'cas_last_valid_ticket_store'
      CAS_LAST_TICKET  = 'cas_last_valid_ticket'

      def initialize(app)
        @app = app
      end

      def call(env)
        store_session_id_for_cas_ticket(env)
        @app.call(env)
      end

      private
      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
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
devise_cas_authenticatable-1.10.4 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.10.3 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.10.2 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.10.1 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.10.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.9.2 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.9.1 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.9.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.8.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.7.1 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.7.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.6.1 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.6.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.5.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.4.1 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.4.0 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.3.8 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.3.7 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.3.6 lib/devise_cas_authenticatable/single_sign_out/rack.rb
devise_cas_authenticatable-1.3.5 lib/devise_cas_authenticatable/single_sign_out/rack.rb