Sha256: adeb229d62d92ea3ad75db381570f3b96e429f6a6010c8260a864e634829ae86

Contents?: true

Size: 916 Bytes

Versions: 6

Compression:

Stored size: 916 Bytes

Contents

module Nyauth
  class SessionSerializer
    def initialize(env)
      @env = env
    end

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

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

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

    def store(client, scope)
      return unless client
      session[key_for(scope)] = serialize(client)
    end

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

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

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

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

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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
nyauth-0.5.0 lib/nyauth/session_serializer.rb
nyauth-0.4.0 lib/nyauth/session_serializer.rb
nyauth-0.3.0 lib/nyauth/session_serializer.rb
nyauth-0.2.8 lib/nyauth/session_serializer.rb
nyauth-0.2.7 lib/nyauth/session_serializer.rb
nyauth-0.2.6 lib/nyauth/session_serializer.rb