Sha256: ab08e87ef58ac4fbf2ad41650560e8731dadb1e45c86b89ad9e1479f7744ae86

Contents?: true

Size: 1.03 KB

Versions: 18

Compression:

Stored size: 1.03 KB

Contents

require "logtail/contexts/session"
require "logtail-rack/middleware"

module Logtail
  module Integrations
    module Rails
      # A Rack middleware that is responsible for adding the Session context
      # {Logtail::Contexts::Session}.
      class SessionContext < Logtail::Integrations::Rack::Middleware
        def call(env)
          id = get_session_id(env)
          if id
            context = Contexts::Session.new(id: id)
            CurrentContext.add(context.to_hash)
          end
          @app.call(env)
        end

        private
        def get_session_id(env)
          session_key = ::Rails.application.config.session_options[:key]
          request = ::ActionDispatch::Request.new(env)
          extract_from_cookie(request, session_key)
        rescue Exception => e
          nil
        end

        def extract_from_cookie(request, session_key)
          data = request
                   .cookie_jar
                   .signed_or_encrypted[session_key] || {}
          data["session_id"]
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
logtail-rails-0.2.9 lib/logtail-rails/session_context.rb
logtail-rails-0.2.8 lib/logtail-rails/session_context.rb
logtail-rails-0.2.7 lib/logtail-rails/session_context.rb
logtail-rails-0.2.6 lib/logtail-rails/session_context.rb
logtail-rails-0.2.5 lib/logtail-rails/session_context.rb
logtail-rails-0.2.4 lib/logtail-rails/session_context.rb
logtail-rails-0.2.3 lib/logtail-rails/session_context.rb
logtail-rails-0.2.2 lib/logtail-rails/session_context.rb
logtail-rails-0.2.1 lib/logtail-rails/session_context.rb
logtail-rails-0.1.8 lib/logtail-rails/session_context.rb
logtail-rails-0.1.7 lib/logtail-rails/session_context.rb
logtail-rails-0.1.6 lib/logtail-rails/session_context.rb
logtail-rails-0.1.5 lib/logtail-rails/session_context.rb
logtail-rails-0.1.4 lib/logtail-rails/session_context.rb
logtail-rails-0.1.3 lib/logtail-rails/session_context.rb
logtail-rails-0.1.2 lib/logtail-rails/session_context.rb
logtail-rails-0.1.1 lib/logtail-rails/session_context.rb
logtail-rails-0.1.0 lib/logtail-rails/session_context.rb