Packages
pow
0.1.0-alpha.1
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/phoenix/controllers/registration_controller.ex
defmodule Pow.Phoenix.RegistrationController do
@moduledoc false
use Pow.Phoenix.Controller
alias Plug.Conn
alias Pow.Plug
plug :require_not_authenticated when action in [:new, :create]
plug :require_authenticated when action in [:edit, :update, :delete]
plug :assign_create_path when action in [:new, :create]
plug :assign_update_path when action in [:edit, :update]
@spec process_new(Conn.t(), map()) :: {:ok, map(), Conn.t()}
def process_new(conn, _params) do
{:ok, Plug.change_user(conn), conn}
end
@spec respond_new({:ok, map(), Conn.t()}) :: Conn.t()
def respond_new({:ok, changeset, conn}) do
conn
|> assign(:changeset, changeset)
|> render("new.html")
end
@spec process_create(Conn.t(), map()) :: {:ok | :error, map(), Conn.t()}
def process_create(conn, %{"user" => user_params}) do
Plug.create_user(conn, user_params)
end
@spec respond_create({:ok | :error, map(), Conn.t()}) :: Conn.t()
def respond_create({:ok, _user, conn}) do
conn
|> put_flash(:info, messages(conn).user_has_been_created(conn))
|> redirect(to: routes(conn).after_registration_path(conn))
end
def respond_create({:error, changeset, conn}) do
conn
|> assign(:changeset, changeset)
|> render("new.html")
end
@spec process_edit(Conn.t(), map()) :: {:ok, map(), Conn.t()}
def process_edit(conn, _params) do
{:ok, Plug.change_user(conn), conn}
end
@spec respond_edit({:ok, map(), Conn.t()}) :: Conn.t()
def respond_edit({:ok, changeset, conn}) do
conn
|> assign(:changeset, changeset)
|> render("edit.html")
end
@spec process_update(Conn.t(), map()) :: {:ok | :error, map(), Conn.t()}
def process_update(conn, %{"user" => user_params}) do
Plug.update_user(conn, user_params)
end
@spec respond_update({:ok, map(), Conn.t()}) :: Conn.t()
def respond_update({:ok, _user, conn}) do
conn
|> put_flash(:info, messages(conn).user_has_been_updated(conn))
|> redirect(to: routes(conn).after_user_updated_path(conn))
end
def respond_update({:error, changeset, conn}) do
conn
|> assign(:changeset, changeset)
|> render("edit.html")
end
@spec process_delete(Conn.t(), map()) :: {:ok | :error, map(), Conn.t()}
def process_delete(conn, _params) do
Plug.delete_user(conn)
end
@spec respond_delete({:ok | :error, map(), Conn.t()}) :: Conn.t()
def respond_delete({:ok, _user, conn}) do
conn
|> put_flash(:info, messages(conn).user_has_been_deleted(conn))
|> redirect(to: routes(conn).after_user_deleted_path(conn))
end
def respond_delete({:error, _changeset, conn}) do
conn
|> put_flash(:info, messages(conn).user_could_not_be_deleted(conn))
|> redirect(to: router_helpers(conn).pow_registration_path(conn, :edit))
end
defp assign_create_path(conn, _opts) do
path = router_helpers(conn).pow_registration_path(conn, :create)
Conn.assign(conn, :action, path)
end
defp assign_update_path(conn, _opts) do
path = router_helpers(conn).pow_registration_path(conn, :update)
Conn.assign(conn, :action, path)
end
end