Packages
pow
1.0.2
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/mix/pow/phoenix/mailer.ex
defmodule Mix.Pow.Phoenix.Mailer do
@moduledoc """
Utilities module for mix phoenix mailer tasks.
"""
alias Mix.Generator
@doc """
Creates a mailer view file for the web module.
"""
@spec create_view_file(atom(), binary(), atom(), binary(), [binary()]) :: :ok
def create_view_file(module, name, web_mod, web_prefix, mails) do
subjects = subjects_methods(module, name, mails)
path = Path.join([web_prefix, "views", Macro.underscore(module), "#{name}_view.ex"])
content = """
defmodule #{inspect(web_mod)}.#{inspect(module)}.#{Macro.camelize(name)}View do
use #{inspect(web_mod)}, :mailer_view
#{Enum.join(subjects, "\n")}
end
"""
Generator.create_file(path, content)
end
@doc """
Creates mailer template files for the web module.
"""
@spec create_templates(atom(), binary(), binary(), [binary()]) :: :ok
def create_templates(module, name, web_prefix, mails) do
template_module = template_module(module, name)
path = Path.join([web_prefix, "templates", Macro.underscore(module), name])
Enum.each(mails, fn mail ->
for type <- [:html, :text] do
content = apply(template_module, type, [mail])
file_path = Path.join(path, "#{mail}.#{type}.eex")
Generator.create_file(file_path, content)
end
end)
end
defp template_module(module, name), do: Module.concat([module, Phoenix, "#{Macro.camelize(name)}Template"])
defp subjects_methods(module, name, mails) do
template_module = template_module(module, name)
Enum.map(mails, fn mail ->
subject = template_module.subject(mail)
"def subject(#{inspect(mail)}, _assigns), do: #{inspect(subject)}"
end)
end
end