* feat: allow reply_to and email_from to be set for an SMTP config * feat: use these SMTP values in the mailers * spec: test the application_mailer * fix: validate with email, and not url * feat: mimic macs changes from https://github.com/forem/forem/pull/16216 to use in this PR * setup packs for admin * refactor: order the keys and add a const for the auth methods * feat: rename the header to a more user friendlly name * chore: move the section with Emails * feat: add a toggle that will show and hide the SMTP form under certain conditions * feat: add the javaScript to handle the toggles * feat: add a better description until we convert to a dropdown * feat: ensure that we have declared sendgrid_enabled * chore: add anote to the config controller * chore: remove references of the email addresses to keep brnach scoped * feat: tweak js * test: cypress workflow to update smtp settings * feat : update the smtp tests * remove comments * update test * chore: rename NOTE * feat: polisha dn test ForemInstance.only_sendgrid_enabled? * chore: remove specs * Update app/lib/constants/settings/smtp.rb Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> * Update spec/system/admin/config/admin_updates_smtp_settings_spec.rb Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> * Update spec/system/admin/config/admin_updates_smtp_settings_spec.rb Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> * Update spec/system/admin/config/admin_updates_smtp_settings_spec.rb Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> * Update app/javascript/packs/admin/config/smtp.js Co-authored-by: Nick Taylor <nick@iamdeveloper.com> * refactor js as per comments * refactor as per comments * Update cypress/integration/seededFlows/adminFlows/config/emailServerSettingsSection.spec.js Co-authored-by: Suzanne Aitchison <suzanne@forem.com> * refactor: update the Cypress tests Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> Co-authored-by: Nick Taylor <nick@iamdeveloper.com> Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
47 lines
1.5 KiB
Ruby
47 lines
1.5 KiB
Ruby
module Settings
|
|
class SMTP < Base
|
|
self.table_name = :settings_smtp
|
|
|
|
OPTIONS = %i[user_name password address authentication domain port].freeze
|
|
AUTHENTICATION_METHODS = %w[plain login cram_md5].freeze
|
|
|
|
setting :address, type: :string, default: ApplicationConfig["SMTP_ADDRESS"].presence
|
|
setting :authentication, type: :string, default: ApplicationConfig["SMTP_AUTHENTICATION"].presence,
|
|
validates: { inclusion: AUTHENTICATION_METHODS }
|
|
setting :domain, type: :string, default: ApplicationConfig["SMTP_DOMAIN"].presence
|
|
setting :password, type: :string, default: ApplicationConfig["SMTP_PASSWORD"].presence
|
|
setting :port, type: :integer, default: ApplicationConfig["SMTP_PORT"].presence || 25
|
|
setting :user_name, type: :string, default: ApplicationConfig["SMTP_USER_NAME"].presence
|
|
|
|
class << self
|
|
def settings
|
|
if provided_minimum_settings?
|
|
custom_provider_settings
|
|
else
|
|
fallback_sendgrid_settings
|
|
end
|
|
end
|
|
|
|
def provided_minimum_settings?
|
|
address.present? && user_name.present? && password.present?
|
|
end
|
|
|
|
private
|
|
|
|
def custom_provider_settings
|
|
to_h
|
|
end
|
|
|
|
def fallback_sendgrid_settings
|
|
{
|
|
address: "smtp.sendgrid.net",
|
|
port: 587,
|
|
authentication: :plain,
|
|
user_name: "apikey",
|
|
password: ENV["SENDGRID_API_KEY"],
|
|
domain: ::Settings::General.app_domain
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|