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/tasks/phoenix/pow.phoenix.install.ex
defmodule Mix.Tasks.Pow.Phoenix.Install do
@shortdoc "Generates user schema module, migration files, templates and views"
@moduledoc """
Generates a user schema module and migration files.
mix pow.phoenix.install -r MyApp.Repo
With `--templates` flag, `Mix.Tasks.Pow.Phoenix.Gen.Templates` and
`Mix.Tasks.Pow.Extension.Phoenix.Gen.Templates` will be called.
## Arguments
* `--templates` generate templates and views
* `--extension` extension to generatetemplates and views for
"""
use Mix.Task
alias Mix.Tasks.Pow.Phoenix.Gen.Templates, as: PhoenixTemplatesTask
alias Mix.Tasks.Pow.Extension.Phoenix.Gen.Templates, as: PhoenixExtensionTemplatesTask
alias Mix.{Pow, Pow.Phoenix}
@switches [context_app: :string, migrations: :boolean, schema: :boolean, templates: :boolean, extension: :keep]
@default_opts [migrations: true, schema: true, templates: false]
@mix_task "pow.phoenix.install"
@doc false
def run(args) do
Pow.no_umbrella!(@mix_task)
Pow.ensure_phoenix!(@mix_task, args)
args
|> Pow.parse_options(@switches, @default_opts)
|> parse_structure()
|> maybe_run_gen_templates(args)
|> maybe_run_extensions_gen_templates(args)
|> print_shell_instructions()
end
defp parse_structure({config, _parsed, _invalid}) do
Map.put(config, :structure, Phoenix.parse_structure(config))
end
defp maybe_run_gen_templates(%{templates: true} = config, args) do
PhoenixTemplatesTask.run(args)
config
end
defp maybe_run_gen_templates(config, _args), do: config
defp maybe_run_extensions_gen_templates(%{templates: true, extension: extensions} = config, args) when extensions != [] do
PhoenixExtensionTemplatesTask.run(args)
config
end
defp maybe_run_extensions_gen_templates(config, _args), do: config
defp print_shell_instructions(%{structure: structure}) do
context_base = structure[:context_base]
web_base = structure[:web_module]
web_prefix = structure[:web_prefix]
Mix.shell.info("""
Pow has been installed in your phoenix app!
There are three files you'll need to configure first before you can use Pow.
First, append this to `config/config.ex`:
config :#{Macro.underscore(context_base)}, :pow,
user: #{inspect(context_base)}.Users.User,
repo: #{inspect(context_base)}.Repo
Next, add `Pow.Plug.Session` plug to `#{web_prefix}/endpoint.ex`:
defmodule #{inspect(web_base)}.Endpoint do
use Phoenix.Endpoint, otp_app: :#{Macro.underscore(context_base)}
# ...
plug Plug.Session,
store: :cookie,
key: "_#{Macro.underscore(context_base)}_key",
signing_salt: "secret"
plug Pow.Plug.Session, otp_app: :#{Macro.underscore(context_base)}
# ...
end
Last, update` #{web_prefix}/router.ex` with the Pow routes:
defmodule #{inspect(web_base)}.Router do
use #{inspect(web_base)}, :router
use Pow.Phoenix.Router
# ... pipelines
scope "/" do
pipe_through :browser
pow_routes()
end
# ... routes
end
""")
end
end