Initial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
class AddEncryptedSecretToPaymentAddress < ActiveRecord::Migration[5.2]
|
||||
def up
|
||||
secrets = PaymentAddress.pluck(:id, :secret)
|
||||
details = PaymentAddress.pluck(:id, :details)
|
||||
settings = Wallet.pluck(:id, :settings)
|
||||
|
||||
remove_column :payment_addresses, :secret
|
||||
add_column :payment_addresses, :secret_encrypted , :string, limit: 255, after: :address
|
||||
|
||||
remove_column :payment_addresses, :details
|
||||
add_column :payment_addresses, :details_encrypted , :string, limit: 1024, after: :secret_encrypted
|
||||
|
||||
remove_column :wallets, :settings
|
||||
add_column :wallets, :settings_encrypted , :string, limit: 1024, after: :gateway
|
||||
|
||||
secrets.each do |s|
|
||||
atr = PaymentAddress.__vault_attributes[:secret]
|
||||
enc = Vault::Rails.encrypt(atr[:path], atr[:key], s[1])
|
||||
execute "UPDATE payment_addresses SET #{atr[:encrypted_column]} = '#{enc}' WHERE id = #{s[0]}"
|
||||
end
|
||||
|
||||
details.each do |d|
|
||||
atr = PaymentAddress.__vault_attributes[:details]
|
||||
enc = Vault::Rails.encrypt(atr[:path], atr[:key], d[1])
|
||||
execute "UPDATE payment_addresses SET #{atr[:encrypted_column]} = '#{enc}' WHERE id = #{d[0]}"
|
||||
end
|
||||
|
||||
settings.each do |s|
|
||||
atr = Wallet.__vault_attributes[:settings]
|
||||
enc = Vault::Rails.encrypt(atr[:path], atr[:key], s[1])
|
||||
execute "UPDATE wallets SET #{atr[:encrypted_column]} = '#{enc}' WHERE id = #{s[0]}"
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
secrets = PaymentAddress.pluck(:id, :secret_encrypted)
|
||||
details = PaymentAddress.pluck(:id, :details_encrypted)
|
||||
settings = Wallet.pluck(:id, :settings_encrypted)
|
||||
|
||||
add_column :payment_addresses, :secret, :string, limit: 128, after: :address
|
||||
remove_column :payment_addresses, :secret_encrypted , :string, after: :address
|
||||
|
||||
add_column :payment_addresses, :details, :string, limit: 1.kilobyte, null: false, default: '{}', after: :secret
|
||||
remove_column :payment_addresses, :details_encrypted , :string, limit: 1024, after: :secret_encrypted
|
||||
|
||||
add_column :wallets, :settings, :string, limit: 1000, default: '{}', null: false, after: :gateway
|
||||
remove_column :wallets, :settings_encrypted , :string, limit: 1024, after: :gateway
|
||||
|
||||
secrets.each do |s|
|
||||
atr = PaymentAddress.__vault_attributes[:secret]
|
||||
dec = Vault::Rails.decrypt(atr[:path], atr[:key], s[1])
|
||||
execute "UPDATE payment_addresses SET secret = '#{dec}' WHERE id = #{s[0]}"
|
||||
end
|
||||
|
||||
details.each do |d|
|
||||
atr = PaymentAddress.__vault_attributes[:details]
|
||||
dec = Vault::Rails.decrypt(atr[:path], atr[:key], d[1])
|
||||
execute "UPDATE payment_addresses SET details = '#{dec}' WHERE id = #{d[0]}"
|
||||
end
|
||||
|
||||
settings.each do |s|
|
||||
atr = Wallet.__vault_attributes[:settings]
|
||||
dec = Vault::Rails.decrypt(atr[:path], atr[:key], s[1])
|
||||
execute "UPDATE wallets SET settings = '#{dec}' WHERE id = #{s[0]}"
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user