Skip to content
Snippets Groups Projects
Commit 0de17159 authored by pabois's avatar pabois
Browse files

tout cassé

parent c653b572
No related branches found
No related tags found
No related merge requests found
class ActiveStorageKeyConverter
def self.convert(legacy_signed_id)
# Try to find blob with the un-modified legacy_signed_id
blob = ActiveStorage::Blob.find_signed!(legacy_signed_id)
legacy_signed_id
rescue ActiveSupport::MessageVerifier::InvalidSignature
#
key_generator = ActiveSupport::KeyGenerator.new(
Rails.application.secrets.secret_key_base,
iterations: 1000,
hash_digest_class: OpenSSL::Digest::SHA1
)
key_generator = ActiveSupport::CachingKeyGenerator.new(key_generator)
secret = key_generator.generate_key("ActiveStorage")
verifier = ActiveSupport::MessageVerifier.new(secret)
ActiveStorage::Blob.find_by_id(verifier.verify(legacy_signed_id, purpose: :blob_id)).try(:signed_id)
end
end
class BlocksMigration
def self.cleanup
class MigrateToRails7Sha256Signature < ActiveRecord::Migration[7.0]
def up
Communication::Block.all.find_each { |block|
self.crawl(block.data)
crawl(block.data)
block.save
}
end
protected
def self.crawl(enumerable)
def crawl(enumerable)
case enumerable
when Array
enumerable.each do |item|
......@@ -19,7 +18,7 @@ class BlocksMigration
enumerable.keys.each do |key|
if key == "signed_id"
# Convert value
enumerable[key] = ActiveStorageKeyConverter.convert(enumerable[key]) if key == "signed_id"
enumerable[key] = convert(enumerable[key]) if key == "signed_id"
elsif [Array, Hash].include?(enumerable[key].class)
crawl(enumerable[key])
end
......@@ -27,4 +26,23 @@ class BlocksMigration
end
end
end
\ No newline at end of file
def convert(legacy_signed_id)
begin
# Try to find blob with the un-modified legacy_signed_id
blob = ActiveStorage::Blob.find_signed!(legacy_signed_id)
legacy_signed_id
rescue ActiveSupport::MessageVerifier::InvalidSignature
#
key_generator = ActiveSupport::KeyGenerator.new(
Rails.application.secrets.secret_key_base,
iterations: 1000,
hash_digest_class: OpenSSL::Digest::SHA1
)
key_generator = ActiveSupport::CachingKeyGenerator.new(key_generator)
secret = key_generator.generate_key("ActiveStorage")
verifier = ActiveSupport::MessageVerifier.new(secret)
ActiveStorage::Blob.find_by_id(verifier.verify(legacy_signed_id, purpose: :blob_id)).try(:signed_id)
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment