defmodule FeedPug.Accounts.UserNotifier do
import Swoosh.Email
alias FeedPug.Mailer
alias FeedPug.Accounts.User
# Delivers the email using the application mailer. The from name/address come
# from the Mailer config (config.exs default, overridden in runtime.exs from
# MAIL_FROM_NAME / MAIL_FROM_ADDRESS).
defp deliver(recipient, subject, body) do
mailer_config = Application.get_env(:feed_pug, Mailer, [])
from_name = Keyword.get(mailer_config, :from_name, "FeedPug")
from_address = Keyword.get(mailer_config, :from_address, "noreply@localhost")
email =
new()
|> to(recipient)
|> from({from_name, from_address})
|> subject(subject)
|> text_body(body)
with {:ok, _metadata} <- Mailer.deliver(email) do
{:ok, email}
end
end
@doc """
Deliver instructions to update a user email.
"""
def deliver_update_email_instructions(user, url) do
deliver(user.email, "Update email instructions", """
==============================
Hi #{user.email},
You can change your email by visiting the URL below:
#{url}
If you didn't request this change, please ignore this.
==============================
""")
end
@doc """
Deliver instructions to log in with a magic link.
"""
def deliver_login_instructions(user, url) do
case user do
%User{confirmed_at: nil} -> deliver_confirmation_instructions(user, url)
_ -> deliver_magic_link_instructions(user, url)
end
end
defp deliver_magic_link_instructions(user, url) do
deliver(user.email, "Log in instructions", """
==============================
Hi #{user.email},
You can log into your account by visiting the URL below:
#{url}
If you didn't request this email, please ignore this.
==============================
""")
end
defp deliver_confirmation_instructions(user, url) do
deliver(user.email, "Confirmation instructions", """
==============================
Hi #{user.email},
You can confirm your account by visiting the URL below:
#{url}
If you didn't create an account with us, please ignore this.
==============================
""")
end
end
neiam
/feedpug
feedpub
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
2.2 KiB · text
History
7ad1745