class Mailsafe::RecipientWhitelist

Public Class Methods

new(message) click to toggle source
# File lib/mailsafe/recipient_whitelist.rb, line 3
def initialize(message)
  @message = message
  @allowed_domain_config = Mailsafe.allowed_domain
  @allowed_domains = parse_allowed_domains
end

Public Instance Methods

filter_recipient_domains() click to toggle source
# File lib/mailsafe/recipient_whitelist.rb, line 9
def filter_recipient_domains
  return unless @allowed_domains.present?
  [ :to, :cc, :bcc ].each { |rec_type| filter_receipient_type(rec_type) }
end

Private Instance Methods

email_has_domain?(email_address) click to toggle source
# File lib/mailsafe/recipient_whitelist.rb, line 26
def email_has_domain?(email_address)
  email_domain = extract_domain_from_address(email_address)
  email_domain.present? && @allowed_domains.include?(email_domain)
end
extract_domain_from_address(email_address) click to toggle source
# File lib/mailsafe/recipient_whitelist.rb, line 31
def extract_domain_from_address(email_address)
  email_address.split("@")[1].try(:downcase)
end
filter_receipient_type(rec_type) click to toggle source
# File lib/mailsafe/recipient_whitelist.rb, line 16
def filter_receipient_type(rec_type)
  receivers = @message.send(rec_type)
  return unless receivers

  receivers = [receivers] unless receivers.is_a?(Array)

  receivers.select! { |recipient| email_has_domain?(recipient) }
  @message.send("#{rec_type}=", receivers)
end
parse_allowed_domains() click to toggle source
# File lib/mailsafe/recipient_whitelist.rb, line 35
def parse_allowed_domains
  if @allowed_domain_config.present?
    @allowed_domain_config.split(',').map(&:strip).map(&:downcase) 
  end
end