Packages
pow
0.1.0-alpha
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/tasks/phoenix/utils.ex
defmodule Mix.Pow.Phoenix.Utils do
@moduledoc """
Utilities module for mix phoenix tasks.
"""
alias Mix.Generator
@spec parse_structure(map()) :: map()
def parse_structure(config) do
context_app = Map.get(config, :context_app, Mix.Pow.Utils.context_app())
context_base = Mix.Pow.Utils.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
@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
@spec create_templates(atom(), binary(), binary(), [binary()]) :: :ok
def create_templates(module, name, web_prefix, actions) do
path = Path.join([web_prefix, "templates", Macro.underscore(module), name])
template_module = Module.concat([module, Phoenix, "#{Macro.camelize(name)}Template"])
actions
|> Enum.map(&String.to_existing_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