lib/ident/user/notify/password_changed.ex

defmodule Rivet.Ident.User.Notify.PasswordChanged do
  alias Rivet.Ident
  use Rivet.Email.Template
  require Logger

  ##############################################################################
  # preload to send to all and not filter verified
  def send(%Ident.User{} = user) do
    with {:ok, user} <- Ident.User.preload(user, [:emails]) do
      Rivet.Email.mailer().send(user.emails, __MODULE__)
    end
  end

  @impl Rivet.Email.Template
  def generate(%Ident.Email{} = email, attr) do
    with {:error, error} <- load(email, attr) do
      Logger.warn(error)

      {:ok, "#{attr.org} email notification - password changed",
       """
       <p/>
       The account at #{attr.org} associated with this email had its password changed.
       <p/>
       #{attr.email_sig}
       """}
    end
  end
end