20190711201818_encrypt_deploy_tokens_tokens.rb 928 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11
# frozen_string_literal: true

class EncryptDeployTokensTokens < ActiveRecord::Migration[5.1]
  DOWNTIME = false

  class DeploymentTokens < ActiveRecord::Base
    self.table_name = 'deploy_tokens'
  end

  def up
    say_with_time("Encrypting tokens from deploy_tokens") do
12
      DeploymentTokens.where('token_encrypted is NULL AND token IS NOT NULL').find_each(batch_size: 10000) do |deploy_token|
13 14 15 16 17 18 19 20
        token_encrypted = Gitlab::CryptoHelper.aes256_gcm_encrypt(deploy_token.token)
        deploy_token.update!(token_encrypted: token_encrypted)
      end
    end
  end

  def down
    say_with_time("Decrypting tokens from deploy_tokens") do
21
      DeploymentTokens.where('token_encrypted IS NOT NULL AND token IS NULL').find_each(batch_size: 10000) do |deploy_token|
22 23 24 25 26 27
        token = Gitlab::CryptoHelper.aes256_gcm_decrypt(deploy_token.token_encrypted)
        deploy_token.update!(token: token)
      end
    end
  end
end