Files
docuseal/lib/accounts.rb
T

76 lines
2.0 KiB
Ruby
Raw Normal View History

2023-06-30 01:26:13 +03:00
# frozen_string_literal: true
module Accounts
module_function
2023-07-12 01:24:25 +03:00
def create_duplicate(account)
new_account = account.dup
new_user = account.users.first.dup
new_user.account = new_account
new_user.encrypted_password = SecureRandom.hex
new_user.email = "#{SecureRandom.hex}@docuseal.co"
account.templates.each do |template|
new_template = template.dup
new_template.account = new_account
2023-07-14 22:33:42 +03:00
new_template.slug = SecureRandom.base58(14)
2023-07-12 01:24:25 +03:00
new_template.save!
Templates::CloneAttachments.call(template: new_template, original_template: template)
end
new_user.save!(validate: false)
new_account
end
2023-07-14 22:33:42 +03:00
def create_default_template(account)
template = Template.find(1)
new_template = Template.find(1).dup
new_template.account_id = account.id
new_template.slug = SecureRandom.base58(14)
2023-09-22 02:20:38 +03:00
new_template.folder = account.default_template_folder
2023-07-14 22:33:42 +03:00
new_template.save!
Templates::CloneAttachments.call(template: new_template, original_template: template)
new_template
end
2023-08-31 01:12:24 +03:00
def load_signing_pkcs(account)
cert_data =
2023-06-30 20:31:17 +03:00
if Docuseal.multitenant?
Docuseal::CERTS
else
EncryptedConfig.find_by(account:, key: EncryptedConfig::ESIGN_CERTS_KEY).value
end
2023-08-31 01:12:24 +03:00
if (default_cert = cert_data['custom']&.find { |e| e['status'] == 'default' })
2023-09-01 01:27:13 +03:00
OpenSSL::PKCS12.new(Base64.urlsafe_decode64(default_cert['data']), default_cert['password'].to_s)
2023-08-31 01:12:24 +03:00
else
GenerateCertificate.load_pkcs(cert_data)
end
2023-06-30 20:31:17 +03:00
end
def can_send_emails?(account)
return true if Docuseal.multitenant?
return true if ENV['SMTP_ADDRESS'].present?
2023-06-30 20:31:17 +03:00
EncryptedConfig.exists?(account_id: account.id, key: EncryptedConfig::EMAIL_SMTP_KEY)
end
2023-06-30 01:26:13 +03:00
def normalize_timezone(timezone)
tzinfo = TZInfo::Timezone.get(ActiveSupport::TimeZone::MAPPING[timezone] || timezone)
::ActiveSupport::TimeZone.all.find { |e| e.tzinfo == tzinfo }&.name || timezone
2023-09-21 10:36:21 +03:00
rescue TZInfo::InvalidTimezoneIdentifier
'UTC'
2023-06-30 01:26:13 +03:00
end
end