Sha256: e8e57a1d5caa701f28c83424f561cdf1d54e624d311f59d80310a257fa1ff797

Contents?: true

Size: 1.06 KB

Versions: 8

Compression:

Stored size: 1.06 KB

Contents

# encoding: utf-8
module Warden
  class SessionSerializer
    attr_reader :env

    def initialize(env)
      @env = env
    end

    def key_for(scope)
      "warden.user.#{scope}.key"
    end

    def serialize(user)
      user
    end

    def deserialize(key)
      key
    end

    def store(user, scope)
      return unless user
      method_name = "#{scope}_serialize"
      specialized = respond_to?(method_name)
      session[key_for(scope)] = specialized ? send(method_name, user) : serialize(user)
    end

    def fetch(scope)
      key = session[key_for(scope)]
      return nil unless key

      method_name = "#{scope}_deserialize"
      user = respond_to?(method_name) ? send(method_name, key) : deserialize(key)
      delete(scope) unless user
      user
    end

    def stored?(scope)
      !!session[key_for(scope)]
    end

    def delete(scope, user=nil)
      session.delete(key_for(scope))
    end

    # We can't cache this result because the session can be lazy loaded
    def session
      env["rack.session"] || {}
    end
  end # SessionSerializer
end # Warden

Version data entries

8 entries across 8 versions & 4 rubygems

Version Path
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/warden-1.2.6/lib/warden/session_serializer.rb
warden-1.2.6 lib/warden/session_serializer.rb
warden-1.2.5 lib/warden/session_serializer.rb
warden-1.2.4 lib/warden/session_serializer.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/session_serializer.rb
loyal_warden-2.0.1 lib/warden/session_serializer.rb
loyal_warden-0.0.5 lib/warden/session_serializer.rb
warden-1.2.3 lib/warden/session_serializer.rb