Packages
pow
1.0.6
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/pow/phoenix/mailer/template.ex
defmodule Pow.Phoenix.Mailer.Template do
@moduledoc """
Module that builds mailer templates for Phoenix views using EEx with
`Phoenix.HTML.Engine`.
## Usage
defmodule PowExtension.Phoenix.Mailer.MailTemplate do
use Pow.Phoenix.Mailer.Template
template :mail, "Subject line", "Text content", "<p>HTML content</p>"
end
"""
@doc false
defmacro __using__(_opts) do
quote do
import unquote(__MODULE__)
import Phoenix.HTML.{Link, Tag}
end
end
@doc """
Generate template methods.
This macro that will compile a mailer template from the provided binaries,
and add the compiled versions to `render/2` methods. The `text/1` and
`html/1` outputs the binaries. A `subject/1` method will be added too.
"""
@spec template(atom(), binary(), binary(), binary()) :: Macro.t()
defmacro template(action, subject, text, html) do
quoted_text = EEx.compile_string(text)
quoted_html = EEx.compile_string(html, engine: Phoenix.HTML.Engine, line: 1, trim: true)
quote do
def render(unquote("#{action}.html"), var!(assigns)) do
_ = var!(assigns)
unquote(quoted_html)
end
def render(unquote("#{action}.text"), var!(assigns)) do
_ = var!(assigns)
unquote(quoted_text)
end
def text(unquote(action)), do: unquote(text)
def html(unquote(action)), do: unquote(html)
def subject(unquote(action)), do: unquote(subject)
end
end
end