Sha256: aeecf22f578523bd95084375eb744033f6db07a82492a4a4ae520774964beda5

Contents?: true

Size: 1.29 KB

Versions: 30

Compression:

Stored size: 1.29 KB

Contents

module Scrivito

module BinaryParamVerifier
  InvalidSignature = Class.new(StandardError)

  def self.verify(encrypted_params)
    params = decrypt(encrypted_params)
    expires = DateConversion.deserialize_from_backend(params['expires'])
    raise InvalidSignature if expires && expires < Time.zone.now
    verify_without_expire(encrypted_params)
  end

  def self.verify_without_expire(encrypted_params)
    params = decrypt(encrypted_params)
    Binary.new(params['binary_id'], params['expires'].nil?,
        transformation_definition: params['transformation_definition'],
        obj_id: params['obj_id'])
  end

  def self.generate(binary)
    params = {
      binary_id: binary.id,
      obj_id: binary.obj_id,
      transformation_definition: binary.transformation_definition,
    }
    if binary.private?
      params[:expires] = DateConversion.serialize_for_backend(Time.zone.now + 1.hour)
    end
    message_verifier.generate(params)
  end

  private_class_method def self.decrypt(encrypted_params)
    message_verifier.verify(encrypted_params)
  rescue ActiveSupport::MessageVerifier::InvalidSignature
    raise InvalidSignature
  end

  private_class_method def self.message_verifier
    ActiveSupport::MessageVerifier.new(
      Rails.application.secrets.secret_key_base, serializer: JSON)
  end
end

end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
scrivito_sdk-1.12.0.rc2 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.12.0.rc1 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.11.0 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.11.0.rc1 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.10.0 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.10.0.rc5 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.10.0.rc4 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.10.0.rc3 app/cms/scrivito/binary_param_verifier.rb
scrivito_sdk-1.10.0.rc2 lib/scrivito/binary_param_verifier.rb
scrivito_sdk-1.10.0.rc1 lib/scrivito/binary_param_verifier.rb