use aws secret

pull/349/head
Pete Matsyburka 1 year ago
parent db22fe7518
commit e5b0a2355f

@ -6,6 +6,7 @@ ruby '3.3.3'
gem 'arabic-letter-connector', require: 'arabic-letter-connector/logic'
gem 'aws-sdk-s3', require: false
gem 'aws-sdk-secretsmanager', require: false
gem 'azure-storage-blob', require: false
gem 'bootsnap', require: false
gem 'cancancan'

@ -96,6 +96,9 @@ GEM
aws-sdk-core (~> 3, >= 3.191.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
aws-sdk-secretsmanager (1.91.0)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.8.0)
aws-eventstream (~> 1, >= 1.0.2)
azure-storage-blob (2.0.3)
@ -563,6 +566,7 @@ DEPENDENCIES
annotate
arabic-letter-connector
aws-sdk-s3
aws-sdk-secretsmanager
azure-storage-blob
better_html
bootsnap

@ -1,25 +1,41 @@
# frozen_string_literal: true
if ENV['RAILS_ENV'] == 'production' && ENV['SECRET_KEY_BASE'].to_s.empty?
require 'dotenv'
require 'securerandom'
if ENV['RAILS_ENV'] == 'production'
if !ENV['AWS_SECRET_MANAGER_ID'].to_s.empty?
require 'aws-sdk-secretsmanager'
dotenv_path = "#{ENV.fetch('WORKDIR', '.')}/docuseal.env"
client = Aws::SecretsManager::Client.new
unless File.exist?(dotenv_path)
default_env = <<~TEXT
DATABASE_URL= # keep empty to use sqlite or specify postgresql database URL
SECRET_KEY_BASE=#{SecureRandom.hex(64)}
TEXT
secret_id = ENV.fetch('AWS_SECRET_MANAGER_ID', '')
File.write(dotenv_path, default_env)
end
client.get_secret_value(secret_id:).secret_string.split("\n").each do |line|
key, value = line.split('=', 2)
ENV[key] = value if !key.to_s.empty? && !value.to_s.empty?
end
RubyVM::YJIT.enable if ENV['RUBY_YJIT_ENABLE'] == 'true'
elsif ENV['SECRET_KEY_BASE'].to_s.empty?
require 'dotenv'
require 'securerandom'
dotenv_path = "#{ENV.fetch('WORKDIR', '.')}/docuseal.env"
database_url = ENV.fetch('DATABASE_URL', nil)
unless File.exist?(dotenv_path)
default_env = <<~TEXT
DATABASE_URL= # keep empty to use sqlite or specify postgresql database URL
SECRET_KEY_BASE=#{SecureRandom.hex(64)}
TEXT
Dotenv.load(dotenv_path)
File.write(dotenv_path, default_env)
end
ENV['DATABASE_URL'] = ENV['DATABASE_URL'].to_s.empty? ? database_url : ENV.fetch('DATABASE_URL', nil)
database_url = ENV.fetch('DATABASE_URL', nil)
Dotenv.load(dotenv_path)
ENV['DATABASE_URL'] = ENV['DATABASE_URL'].to_s.empty? ? database_url : ENV.fetch('DATABASE_URL', nil)
end
end
if ENV['DATABASE_URL'].to_s.split('@').last.to_s.split('/').first.to_s.include?('_')

Loading…
Cancel
Save