Sha256: e5a464a45abc989860c4e32af56463dfe92959f06fadf960548446df368eaf94

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

module JWTKeeper
  module Datastore
    class << self
      # @!visibility private
      def rotate(jti, seconds)
        set_with_expiry(jti, seconds, :soft)
      end

      # @!visibility private
      def revoke(jti, seconds)
        set_with_expiry(jti, seconds, :hard)
      end

      # @!visibility private
      def pending?(jti)
        value = get(jti)
        value.present? && value.to_sym == :soft
      end

      # @!visibility private
      def revoked?(jti)
        value = get(jti)
        value.present? && value.to_sym == :hard
      end

      private

      # @!visibility private
      def set_with_expiry(jti, seconds, type)
        redis = JWTKeeper.configuration.redis_connection

        if redis.is_a?(Redis)
          redis.setex(jti, seconds, type)
        elsif defined?(ConnectionPool) && redis.is_a?(ConnectionPool)
          redis.with { |conn| conn.setex(jti, seconds, type) }
        else
          throw 'Bad Redis Connection'
        end
      end

      # @!visibility private
      def get(jti)
        redis = JWTKeeper.configuration.redis_connection

        if redis.is_a?(Redis)
          redis.get(jti)
        elsif defined?(ConnectionPool) && redis.is_a?(ConnectionPool)
          redis.with { |conn| conn.get(jti) }
        else
          throw 'Bad Redis Connection'
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jwt_keeper-6.0.0 lib/jwt_keeper/datastore.rb
jwt_keeper-5.0.1 lib/jwt_keeper/datastore.rb
jwt_keeper-5.0.0 lib/jwt_keeper/datastore.rb
jwt_keeper-4.0.1 lib/jwt_keeper/datastore.rb
jwt_keeper-4.0.0 lib/jwt_keeper/datastore.rb