Module: Katello::UrlConstrainedCookieStoreV32X

Included in:
UrlConstrainedCookieStore
Defined in:
lib/katello/url_constrained_cookie_store.rb

Instance Method Summary collapse

Instance Method Details

#commit_session(env, status, headers, body) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 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