Packages
pow
1.0.15
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/plug/require_authenticated.ex
defmodule Pow.Plug.RequireAuthenticated do
@moduledoc """
This plug ensures that a user has been authenticated.
You can see `Pow.Phoenix.PlugErrorHandler` for an example of the error
handler module.
## Example
plug Pow.Plug.RequireAuthenticated,
error_handler: MyApp.CustomErrorHandler
"""
alias Plug.Conn
alias Pow.{Config, Plug}
@doc false
@spec init(Config.t()) :: atom()
def init(config) do
Config.get(config, :error_handler) || raise_no_error_handler()
end
@doc false
@spec call(Conn.t(), atom()) :: Conn.t()
def call(conn, handler) do
conn
|> Plug.current_user()
|> maybe_halt(conn, handler)
end
defp maybe_halt(nil, conn, handler) do
conn
|> handler.call(:not_authenticated)
|> Conn.halt()
end
defp maybe_halt(_user, conn, _handler), do: conn
@spec raise_no_error_handler :: no_return
defp raise_no_error_handler do
Config.raise_error("No :error_handler configuration option provided. It's required to set this when using #{inspect __MODULE__}.")
end
end