module Jpmobile::TransSid

Public Class Methods

included(controller) click to toggle source
# File lib/jpmobile/trans_sid.rb, line 22
def self.included(controller)
  controller.after_action(:append_session_id_parameter)
end

Protected Instance Methods

default_url_options() click to toggle source

URLにsession_idを追加する。

Calls superclass method
# File lib/jpmobile/trans_sid.rb, line 29
def default_url_options
  result = super || {}.with_indifferent_access
  return result unless request # for test process
  return result unless apply_trans_sid?

  result.merge({ session_key.to_sym => jpmobile_session_id })
end

Private Instance Methods

append_session_id_parameter() click to toggle source

formにsession_idを追加する。

# File lib/jpmobile/trans_sid.rb, line 58
def append_session_id_parameter
  return unless request # for test process
  return unless apply_trans_sid?
  return unless jpmobile_session_id

  response.body = response.body.gsub(%r{(</form>)}i, sid_hidden_field_tag + '\1')
end
jpmobile_session_id() click to toggle source

session_idを返す rack 1.4 (rails3) request.session_options rack 1.5 (rails4) request.session.id

# File lib/jpmobile/trans_sid.rb, line 48
def jpmobile_session_id
  request.session_options[:id] || request.session.id
end
session_key() click to toggle source

session_keyを返す。

# File lib/jpmobile/trans_sid.rb, line 40
def session_key
  Rails.application.config.session_options.merge(request.session_options || {})[:key] ||
    ActionDispatch::Session::AbstractStore::DEFAULT_OPTIONS[:key]
end
sid_hidden_field_tag() click to toggle source

session_idを埋め込むためのhidden fieldを出力する。

# File lib/jpmobile/trans_sid.rb, line 53
def sid_hidden_field_tag
  "<input type=\"hidden\" name=\"#{CGI.escapeHTML(session_key.to_s)}\" value=\"#{CGI.escapeHTML(jpmobile_session_id.to_s)}\" />"
end