Sha256: 1ab9a40bbf911c841f989594e9207d6b71dadfdc388405084210a158576120ae

Contents?: true

Size: 905 Bytes

Versions: 6

Compression:

Stored size: 905 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)
      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.7.2 lib/nyauth/session_serializer.rb
nyauth-0.7.1 lib/nyauth/session_serializer.rb
nyauth-0.7.0 lib/nyauth/session_serializer.rb
nyauth-0.6.2 lib/nyauth/session_serializer.rb
nyauth-0.6.1 lib/nyauth/session_serializer.rb
nyauth-0.6.0 lib/nyauth/session_serializer.rb