Packages
pow
1.0.20
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/extensions/email_confirmation/phoenix/controllers/confirmation_controller.ex
defmodule PowEmailConfirmation.Phoenix.ConfirmationController do
@moduledoc false
use Pow.Extension.Phoenix.Controller.Base
alias Plug.Conn
alias PowEmailConfirmation.Plug
plug :load_user_from_confirmation_token when action in [:show]
@spec process_show(Conn.t(), map()) :: {:ok | :error, map(), Conn.t()}
def process_show(conn, _params), do: Plug.confirm_email(conn, %{})
@spec respond_show({:ok | :error, map(), Conn.t()}) :: Conn.t()
def respond_show({:ok, _user, conn}) do
conn
|> put_flash(:info, extension_messages(conn).email_has_been_confirmed(conn))
|> redirect(to: redirect_to(conn))
end
def respond_show({:error, _changeset, conn}) do
conn
|> put_flash(:error, extension_messages(conn).email_confirmation_failed(conn))
|> redirect(to: redirect_to(conn))
end
defp redirect_to(conn) do
case Pow.Plug.current_user(conn) do
nil -> routes(conn).session_path(conn, :new)
_user -> routes(conn).registration_path(conn, :edit)
end
end
defp load_user_from_confirmation_token(%{params: %{"id" => token}} = conn, _opts) do
case Plug.load_user_by_token(conn, token) do
{:error, conn} ->
conn
|> put_flash(:error, extension_messages(conn).email_confirmation_failed(conn))
|> redirect(to: redirect_to(conn))
|> halt()
{:ok, conn} ->
conn
end
end
end