Class: Nyauth::SessionSerializer

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

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ SessionSerializer

Returns a new instance of SessionSerializer.



3
4
5
# File 'lib/nyauth/session_serializer.rb', line 3

def initialize(env)
  @env = env
end

Instance Method Details

#delete(scope) ⇒ Object



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

def delete(scope)
  session.delete(key_for(scope))
end

#deserialize(key) ⇒ Object



15
16
17
18
# File 'lib/nyauth/session_serializer.rb', line 15

def deserialize(key)
  klass_name, client_id = Nyauth::Encryptor.decrypt(key).split(':')
  klass_name.constantize.find_by(id: client_id)
end

#fetch(scope) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/nyauth/session_serializer.rb', line 26

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

  client = deserialize(key)
  delete(scope) unless client
  client
end

#key_for(scope) ⇒ Object



7
8
9
# File 'lib/nyauth/session_serializer.rb', line 7

def key_for(scope)
  "nyauth.#{scope}.session"
end

#serialize(client) ⇒ Object



11
12
13
# File 'lib/nyauth/session_serializer.rb', line 11

def serialize(client)
  Nyauth::Encryptor.encrypt("#{client.class.name}:#{client.id}")
end

#sessionObject



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

def session
  @env['rack.session'] || {}
end

#store(client, scope) ⇒ Object



20
21
22
23
24
# File 'lib/nyauth/session_serializer.rb', line 20

def store(client, scope)
  return unless client

  session[key_for(scope)] = serialize(client)
end

#stored?(scope) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/nyauth/session_serializer.rb', line 35

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