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/template.ex
defmodule Pow.Phoenix.Template do
@moduledoc """
Module that can builds templates for Phoenix views using EEx with
`Phoenix.HTML.Engine`.
## Example
defmodule MyApp.ResourceTemplate do
use Pow.Phoenix.Template
template :new, :html, "<%= content_tag(:span, "Template") %>"
end
MyApp.ResourceTemplate.render("new.html", assigns)
"""
@doc false
defmacro __using__(_opts) do
quote do
import unquote(__MODULE__)
import Pow.Phoenix.HTML.ErrorHelpers, only: [error_tag: 2]
import Phoenix.HTML.{Form, Link}
alias Pow.Phoenix.Router.Helpers, as: Routes
end
end
@doc """
Generates template methods.
This macro that will compile a phoenix view template from the provided
binary, and add the compiled version to a `render/2` method. The `html/1`
method outputs the binary.
"""
@spec template(atom(), atom(), binary() | {atom(), any()}) :: Macro.t()
defmacro template(action, :html, content) do
content = EEx.eval_string(content)
render_html_template(action, content)
end
defp render_html_template(action, content) do
quoted = EEx.compile_string(content, engine: Phoenix.HTML.Engine, line: 1, trim: true)
quote do
def render(unquote("#{action}.html"), var!(assigns)) do
_ = var!(assigns)
unquote(quoted)
end
def html(unquote(action)), do: unquote(content)
end
end
end