module Katello::UrlConstrainedCookieStoreV32X

Public Instance Methods

commit_session(env, status, headers, body) click to toggle source
# File lib/katello/url_constrained_cookie_store.rb, line 30
def commit_session(env, status, headers, body)
  session = env['rack.session']
  options = env['rack.session.options']

  if options[:drop] || options[:renew]
    session_id = destroy_session(env, options[:id] || generate_sid, options)
    return [status, headers, body] unless session_id
  end

  return [status, headers, body] unless commit_session?(env, session, options)

  session.send(:load!) unless loaded_session?(session)
  session = session.to_hash
  session_id ||= options[:id] || generate_sid

  if !data = set_session(env, session_id, session, options)
    env["rack.errors"].puts("Warning! #{self.class.name} failed to save session. Content dropped.")
  elsif options[:defer] && !options[:renew]
    env["rack.errors"].puts("Defering cookie for #{session_id}") if $VERBOSE
  else
    cookie = create_cookie(ActionDispatch::Request.new(env), data, options)
    set_cookie(env, headers, cookie.merge!(options))
  end

  [status, headers, body]
end