Sha256: 41d91440f21ad100dca5408b81a6687150aad1541a7ca3b6615aacd36710d789

Contents?: true

Size: 1.25 KB

Versions: 15

Compression:

Stored size: 1.25 KB

Contents

module Galakei::SessionIdParameter::InUrl
  def url_for(options = {})
    return super unless inject_session_id_parameter?(options)
    session_opts = request.env[ActionDispatch::Session::AbstractStore::ENV_SESSION_OPTIONS_KEY]
    # if we don't have a session ID yet, create one
    if session_opts[:id].blank?
      # make sure to reset any active record session store,
      # we'll have to create a new one for the new session
      request.env[ActiveRecord::SessionStore::SESSION_RECORD_KEY] = nil if defined?(ActiveRecord)
      # create a new session ID
      session_opts[:id] = ActiveSupport::SecureRandom.hex(8)
    end
    super(options.merge(::Rails.application.config.session_options[:key] => session_opts[:id]))
  end

  private

  def inject_session_id_parameter?(options)
    return false unless options.is_a?(Hash) && request
    return true if request.imode_browser_1_0?

    # cookies on older AU handsets using SSL are unreliable
    return true if request.au_browser_6? && request.ssl?

    # au and softbank have two forms of cookies depending on if it is
    # http or https, so carry over session id when switching protocols
    return false unless options[:protocol]
    request.different_cookie_in_ssl? && (request.protocol != options[:protocol])
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
galakei-0.11.3 lib/galakei/session_id_parameter/in_url.rb
galakei-0.11.2 lib/galakei/session_id_parameter/in_url.rb
galakei-0.11.1 lib/galakei/session_id_parameter/in_url.rb
galakei-0.11.0 lib/galakei/session_id_parameter/in_url.rb
galakei-0.10.1 lib/galakei/session_id_parameter/in_url.rb
galakei-0.10.0 lib/galakei/session_id_parameter/in_url.rb
galakei-0.9.1 lib/galakei/session_id_parameter/in_url.rb
galakei-0.9.0 lib/galakei/session_id_parameter/in_url.rb
galakei-0.8.1 lib/galakei/session_id_parameter/in_url.rb
galakei-0.8.0 lib/galakei/session_id_parameter/in_url.rb
galakei-0.7.3 lib/galakei/session_id_parameter/in_url.rb
galakei-0.7.2 lib/galakei/session_id_parameter/in_url.rb
galakei-0.7.1 lib/galakei/session_id_parameter/in_url.rb
galakei-0.7.0 lib/galakei/session_id_parameter/in_url.rb
galakei-0.6.6 lib/galakei/session_id_parameter/in_url.rb