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.ex
defmodule Mix.Pow.Phoenix do
@moduledoc """
Utilities module for mix phoenix tasks.
"""
alias Mix.Generator
alias Mix.Pow
@doc """
Builds a map containing context and web module information.
"""
@spec parse_structure(map()) :: map()
def parse_structure(config) do
context_app = Map.get(config, :context_app) || Pow.context_app()
context_base = Pow.context_base(context_app)
web_prefix = web_path(context_app)
web_module = web_module(context_base, web_prefix)
%{
context_app: context_app,
context_base: context_base,
web_prefix: web_prefix,
web_module: web_module
}
end
defp web_path(this_app), do: Path.join("lib", "#{this_app}_web")
defp web_module(base, web_prefix) do
case String.ends_with?(web_prefix, "_web") do
true -> Module.concat(["#{base}Web"])
false -> Module.concat([base])
end
end
@doc """
Creates a view file for the web module.
"""
@spec create_view_file(atom(), binary(), atom(), binary()) :: :ok
def create_view_file(module, name, web_mod, web_prefix) do
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)}, :view
end
"""
Generator.create_file(path, content)
end
@doc """
Creates template files for the web module.
"""
@spec create_templates(atom(), binary(), binary(), [binary()]) :: :ok
def create_templates(module, name, web_prefix, actions) do
template_module = Module.concat([module, Phoenix, "#{Macro.camelize(name)}Template"])
path = Path.join([web_prefix, "templates", Macro.underscore(module), name])
actions
|> Enum.map(&String.to_atom/1)
|> Enum.each(fn action ->
content = template_module.html(action)
file_path = Path.join(path, "#{action}.html.eex")
Generator.create_file(file_path, content)
end)
end
end