class Warden::SessionSerializer

Attributes

env[R]

Public Class Methods

new(env) click to toggle source
# File lib/warden/session_serializer.rb, line 7
def initialize(env)
  @env = env
end

Public Instance Methods

delete(scope, user=nil) click to toggle source
# File lib/warden/session_serializer.rb, line 44
def delete(scope, user=nil)
  session.delete(key_for(scope))
end
deserialize(key) click to toggle source
# File lib/warden/session_serializer.rb, line 19
def deserialize(key)
  key
end
fetch(scope) click to toggle source
# File lib/warden/session_serializer.rb, line 30
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
key_for(scope) click to toggle source
# File lib/warden/session_serializer.rb, line 11
def key_for(scope)
  "warden.user.#{scope}.key"
end
serialize(user) click to toggle source
# File lib/warden/session_serializer.rb, line 15
def serialize(user)
  user
end
session() click to toggle source

We can't cache this result because the session can be lazy loaded

# File lib/warden/session_serializer.rb, line 49
def session
  env["rack.session"] || {}
end
store(user, scope) click to toggle source
# File lib/warden/session_serializer.rb, line 23
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
stored?(scope) click to toggle source
# File lib/warden/session_serializer.rb, line 40
def stored?(scope)
  !!session[key_for(scope)]
end