Sha256: b4f3c7e6bbcd0dcaa1ce10ec7e8c65472a9373f36e1b845da171e7efa190a691

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require 'warden/cookie_session/encrypted_cookie'

class Warden::CookieSession::Strategy < ::Warden::Strategies::Base

  def valid?
    @key_salt = cookies[Warden::CookieSession.config.cookie] && encrypted_cookie.get.presence
  rescue StandardError => e
    logger.warn "Warden::CookieSession::Strategy#valid? failed: #{e}"
    logger.debug { e.backtrace }
    return false
  end

  def store?
    false
  end

  def authenticate!
    key, salt = @key_salt || encrypted_cookie.get
    record = Warden::CookieSession.config.fetch_record(key)
    success!(record) if record && Warden::CookieSession.config.validate_record(record, salt)
  rescue StandardError => e
    logger.warn "Warden::CookieSession::Strategy failed: #{e}"
    fail!(e)
    logger.debug { e.backtrace }
  end

  def self.encrypted_cookie(cookies)
    Warden::CookieSession::EncryptedCookie.new(
      store:  cookies,
      cookie: Warden::CookieSession.config.cookie,
      secret: Warden::CookieSession.config.secret
    )
  end

  def encrypted_cookie
    @encrypted_cookie ||= Warden::CookieSession::Strategy.encrypted_cookie(cookies)
  end

  private

    def logger
      Warden::CookieSession.config.logger || Logger.new(nil)
    end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
warden_cookie_session-0.1.2.19222 lib/warden/cookie_session/strategy.rb