BigW Consortium Gitlab

secret_token.rb 1.55 KB
Newer Older
gitlabhq committed
1 2
# Be sure to restart your server when you modify this file.

3 4
require 'securerandom'

gitlabhq committed
5 6 7 8
# Your secret key for verifying the integrity of signed cookies.
# If you change this key, all old signed cookies will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
9 10 11

def find_secure_token
  token_file = Rails.root.join('.secret')
12 13 14
  if ENV.key?('SECRET_KEY_BASE')
    ENV['SECRET_KEY_BASE']
  elsif File.exist? token_file
15 16 17 18 19 20 21 22 23 24
    # Use the existing token.
    File.read(token_file).chomp
  else
    # Generate a new token of 64 random hexadecimal characters and store it in token_file.
    token = SecureRandom.hex(64)
    File.write(token_file, token)
    token
  end
end

Valery Sizov committed
25 26
Rails.application.config.secret_token = find_secure_token
Rails.application.config.secret_key_base = find_secure_token
27 28 29 30 31 32

# CI
def generate_new_secure_token
  SecureRandom.hex(64)
end

Valery Sizov committed
33
if Rails.application.secrets.db_key_base.blank?
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  warn "Missing `db_key_base` for '#{Rails.env}' environment. The secrets will be generated and stored in `config/secrets.yml`"

  all_secrets = YAML.load_file('config/secrets.yml') if File.exist?('config/secrets.yml')
  all_secrets ||= {}

  # generate secrets
  env_secrets = all_secrets[Rails.env.to_s] || {}
  env_secrets['db_key_base'] ||= generate_new_secure_token
  all_secrets[Rails.env.to_s] = env_secrets

  # save secrets
  File.open('config/secrets.yml', 'w', 0600) do |file|
    file.write(YAML.dump(all_secrets))
  end

Valery Sizov committed
49
  Rails.application.secrets.db_key_base = env_secrets['db_key_base']
50
end