class Rack::CookieLogger::Middleware
Logs:
-
request cookies (the `Cookie:` header)
-
response cookies (the `Set-Cookie:` header)
Constants
- LOG_PREFIX
- SENSITIVE_COOKIE_SUFFIXES
TODO: Make these configurable
Public Class Methods
new(app)
click to toggle source
# File lib/rack/cookie_logger/middleware.rb, line 20 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/cookie_logger/middleware.rb, line 24 def call(env) @logger = env[::Rack::RACK_ERRORS] log_request_cookies(::Rack::Request.new(env)) status, headers, body = @app.call(env) log_response_cookies(::Rack::Response.new([], status, headers)) [status, headers, body] end
Private Instance Methods
log(message)
click to toggle source
# File lib/rack/cookie_logger/middleware.rb, line 34 def log(message) @logger << (LOG_PREFIX + message + "\n") end
log_value(name, value)
click to toggle source
# File lib/rack/cookie_logger/middleware.rb, line 68 def log_value(name, value) if sensitive?(name) redact(value) else value end end
redact(value)
click to toggle source
`value` can be `nil` when clearing a cookie. Some applications set the cookie value to the empty string instead of, or in addition to, setting an expiration date in the past.
# File lib/rack/cookie_logger/middleware.rb, line 79 def redact(value) return if value.nil? value[0, 3] + '.. (redacted)' end
sensitive?(name)
click to toggle source
# File lib/rack/cookie_logger/middleware.rb, line 84 def sensitive?(name) SENSITIVE_COOKIE_SUFFIXES.any? { |suffix| name.end_with?(suffix) } end