lib/ident/user/notify/user_verification.ex

defmodule Rivet.Ident.User.Notify.UserVerification do
  alias Rivet.Ident
  use Rivet.Email.Template

  require Logger

  @reset_code_expire_mins 1_440
  def sendto(%Ident.Email{address: eaddr, user: user} = email) do
    with {:ok, code} <-
           Ident.UserCode.Lib.generate_code(
             email.user_id,
             :email_verify,
             @reset_code_expire_mins,
             %{
               email_id: email.id
             }
           ) do
      Logger.info("added email", user_id: user.id, eaddr: eaddr)
      Rivet.Email.mailer().sendto(email, __MODULE__, code: code.code)
    end
  end
end