Class: Warden::SessionSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/warden/session_serializer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ SessionSerializer

Returns a new instance of SessionSerializer.



6
7
8
# File 'lib/warden/session_serializer.rb', line 6

def initialize(env)
  @env = env
end

Instance Attribute Details

#envObject (readonly)

Returns the value of attribute env.



4
5
6
# File 'lib/warden/session_serializer.rb', line 4

def env
  @env
end

Instance Method Details

#delete(scope, user = nil) ⇒ Object



43
44
45
# File 'lib/warden/session_serializer.rb', line 43

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

#deserialize(key) ⇒ Object



18
19
20
# File 'lib/warden/session_serializer.rb', line 18

def deserialize(key)
  key
end

#fetch(scope) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/warden/session_serializer.rb', line 29

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) ⇒ Object



10
11
12
# File 'lib/warden/session_serializer.rb', line 10

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

#serialize(user) ⇒ Object



14
15
16
# File 'lib/warden/session_serializer.rb', line 14

def serialize(user)
  user
end

#sessionObject

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



48
49
50
# File 'lib/warden/session_serializer.rb', line 48

def session
  env["rack.session"] || {}
end

#store(user, scope) ⇒ Object



22
23
24
25
26
27
# File 'lib/warden/session_serializer.rb', line 22

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) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/warden/session_serializer.rb', line 39

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