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/extension/phoenix/controllers/controller/base.ex
defmodule Pow.Extension.Phoenix.Controller.Base do
@moduledoc """
Used with Pow Extension Phoenix controllers to handle messages and routes.
## Usage
defmodule MyPowExtension.Phoenix.CustomController do
use Pow.Extension.Phoenix.Controller.Base
# ...
end
"""
alias Pow.{Config, Phoenix.Controller}
@doc false
defmacro __using__(config) do
quote do
use Controller, unquote(config)
unquote(__MODULE__).__define_helper_methods__(unquote(config))
end
end
@doc false
defmacro __define_helper_methods__(config) do
quote do
@messages_fallback unquote(__MODULE__).__messages_fallback__(unquote(config), __MODULE__, __ENV__)
@doc false
def extension_messages(conn), do: unquote(__MODULE__).__messages_module__(conn, @messages_fallback)
end
end
@doc false
def __messages_module__(conn, fallback) do
case Controller.messages(conn, fallback) do
^fallback -> fallback
messages -> Module.concat([messages, fallback])
end
end
@doc false
def __messages_fallback__(module) do
[_controller | base] =
module
|> Module.split()
|> Enum.reverse()
[Messages]
|> Enum.concat(base)
|> Enum.reverse()
|> Module.concat()
end
# TODO: Remove config fallback by 1.1.0
def __messages_fallback__(config, module, env) do
case Config.get(config, :messages_backend_fallback) do
nil ->
__messages_fallback__(module)
module ->
IO.warn("Passing `:messages_backend_fallback` is deprecated", Macro.Env.stacktrace(env))
module
end
end
end