You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							968 B
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							968 B
						
					
					
				class NotifyMailer < ApplicationMailer | 
						|
  require "notifications/client" | 
						|
 | 
						|
  def notify_client | 
						|
    @notify_client ||= ::Notifications::Client.new(ENV["GOVUK_NOTIFY_API_KEY"]) | 
						|
  end | 
						|
 | 
						|
  def send_email(email, template_id, personalisation) | 
						|
    return true if intercept_send?(email) | 
						|
 | 
						|
    notify_client.send_email( | 
						|
      email_address: email, | 
						|
      template_id:, | 
						|
      personalisation:, | 
						|
    ) | 
						|
  end | 
						|
 | 
						|
  def personalisation(record, token, url, username: false) | 
						|
    { | 
						|
      name: record.name || record.email, | 
						|
      email: username || record.email, | 
						|
      organisation: record.respond_to?(:organisation) ? record.organisation.name : "", | 
						|
      link: "#{url}#{token}", | 
						|
    } | 
						|
  end | 
						|
 | 
						|
  def intercept_send?(email) | 
						|
    return false unless email_allowlist | 
						|
 | 
						|
    email_domain = email.split("@").last.downcase | 
						|
    !(Rails.env.production? || Rails.env.test?) && email_allowlist.exclude?(email_domain) | 
						|
  end | 
						|
 | 
						|
  def email_allowlist | 
						|
    Rails.application.credentials[:email_allowlist] | 
						|
  end | 
						|
end
 | 
						|
 |