summaryrefslogtreecommitdiff
path: root/db/migrate/20191120084627_add_encrypted_fields_to_application_settings.rb
blob: 4e0886a512175e2f4444c1bac1981c5196577ab6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# frozen_string_literal: true

class AddEncryptedFieldsToApplicationSettings < ActiveRecord::Migration[5.2]
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  PLAINTEXT_ATTRIBUTES = %w[
    akismet_api_key
    elasticsearch_aws_secret_access_key
    recaptcha_private_key
    recaptcha_site_key
    slack_app_secret
    slack_app_verification_token
  ].freeze

  def up
    PLAINTEXT_ATTRIBUTES.each do |plaintext_attribute|
      add_column :application_settings, "encrypted_#{plaintext_attribute}", :text
      add_column :application_settings, "encrypted_#{plaintext_attribute}_iv", :string, limit: 255
    end
  end

  def down
    PLAINTEXT_ATTRIBUTES.each do |plaintext_attribute|
      remove_column :application_settings, "encrypted_#{plaintext_attribute}"
      remove_column :application_settings, "encrypted_#{plaintext_attribute}_iv"
    end
  end
end