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/pow/plug/require_not_authenticated.ex
defmodule Pow.Plug.RequireNotAuthenticated do
@moduledoc """
This plug ensures that a user hasn't already been authenticated.
Example:
plug Pow.Plug.RequireAuthenticated,
error_handler: MyAppWeb.Pow.ErrorHandler
You can see `Pow.Phoenix.PlugErrorHandler` for an example of the error
handler module.
"""
alias Plug.Conn
alias Pow.{Config, Plug}
@spec init(Config.t()) :: Config.t()
def init(config), do: config
@spec call(Conn.t(), Config.t()) :: Conn.t()
def call(conn, config) do
conn
|> Plug.current_user()
|> maybe_halt(conn, config)
end
defp maybe_halt(nil, conn, _config), do: conn
defp maybe_halt(_user, conn, config) do
handler = Config.get(config, :error_handler, nil)
case handler do
nil ->
Conn.halt(conn)
handler ->
conn
|> handler.call(:already_authenticated)
|> Conn.halt()
end
end
end