Packages

Adds helpful extras to Guardian like default mailer support, as well as out of the box controllers and routes

Current section

Files

Jump to
sentinel lib sentinel mailer.ex
Raw

lib/sentinel/mailer.ex

defmodule Sentinel.Mailer do
use Bamboo.Mailer, otp_app: :sentinel
use Bamboo.Phoenix, view: Sentinel.EmailView
import Bamboo.Email
defp email_sender do
Application.get_env(:sentinel, :email_sender)
end
defp reply_to do
Application.get_env(:sentinel, :reply_to) || email_sender
end
defp send_emails? do
Application.get_env(:sentinel, :send_emails)
end
def app_name do
Application.get_env(:sentinel, :app_name)
end
def base_email(user) do
new_email
|> put_layout({Sentinel.EmailLayoutView, :email})
|> to(user.email)
|> from(email_sender)
|> put_header("Reply-To", reply_to)
end
def send_new_email_address_email(user, confirmation_token) do
Sentinel.Mailer.base_email(user)
|> to(user.unconfirmed_email)
|> subject("Please confirm your email address")
|> assign(:user, user)
|> assign(:confirmation_token, confirmation_token)
|> render(:new_email_address)
end
def send_password_reset_email(user, password_reset_token) do
Sentinel.Mailer.base_email(user)
|> assign(:user, user)
|> assign(:password_reset_token, password_reset_token)
|> subject("Reset Your Password")
|> render(:password_reset)
end
def send_welcome_email(user, confirmation_token) do
Sentinel.Mailer.base_email(user)
|> assign(:user, user)
|> assign(:confirmation_token, confirmation_token)
|> subject("Hello #{user.email}")
|> render(:welcome)
end
def send_invite_email(user, {confirmation_token, password_reset_token}) do
Sentinel.Mailer.base_email(user)
|> assign(:user, user)
|> assign(:confirmation_token, confirmation_token)
|> assign(:password_reset_token, password_reset_token)
|> subject("You've been invited to #{app_name} #{user.email}")
|> render("invite.html")
end
def managed_deliver(email) do
if send_emails? do
Sentinel.Mailer.deliver_later(email)
end
end
end