mirror of
https://github.com/discourse/discourse.git
synced 2024-12-15 12:43:42 +08:00
30990006a9
This reduces chances of errors where consumers of strings mutate inputs and reduces memory usage of the app. Test suite passes now, but there may be some stuff left, so we will run a few sites on a branch prior to merging
42 lines
1.6 KiB
Ruby
42 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_dependency 'email/message_builder'
|
|
|
|
class RejectionMailer < ActionMailer::Base
|
|
include Email::BuildEmailHelper
|
|
|
|
DISALLOWED_TEMPLATE_ARGS = [:to,
|
|
:from,
|
|
:base_url,
|
|
:user_preferences_url,
|
|
:include_respond_instructions,
|
|
:html_override,
|
|
:add_unsubscribe_link,
|
|
:respond_instructions,
|
|
:style,
|
|
:body,
|
|
:post_id,
|
|
:topic_id,
|
|
:subject,
|
|
:template,
|
|
:allow_reply_by_email,
|
|
:private_reply,
|
|
:from_alias]
|
|
|
|
# Send an email rejection message.
|
|
#
|
|
# template - i18n key under system_messages
|
|
# message_from - Who to send the rejection messsage to
|
|
# template_args - arguments to pass to i18n for interpolation into the message
|
|
# Certain keys are disallowed in template_args to avoid confusing the
|
|
# BuildEmailHelper. You can see the list in DISALLOWED_TEMPLATE_ARGS.
|
|
def send_rejection(template, message_from, template_args)
|
|
if template_args.keys.any? { |k| DISALLOWED_TEMPLATE_ARGS.include? k }
|
|
raise ArgumentError.new('Reserved key in template arguments')
|
|
end
|
|
|
|
build_email(message_from, template_args.merge(template: "system_messages.#{template}"))
|
|
end
|
|
|
|
end
|