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/phoenix/controllers/registration_controller.ex
defmodule Pow.Phoenix.RegistrationController do
@moduledoc false
use Pow.Phoenix.Web, :controller
alias Plug.Conn
alias Pow.Phoenix.{Controller, PlugErrorHandler, ViewHelpers}
alias Pow.Plug
plug Plug.RequireNotAuthenticated, [error_handler: PlugErrorHandler] when action in [:new, :create]
plug Plug.RequireAuthenticated, [error_handler: PlugErrorHandler] when action in [:edit, :update, :delete]
@spec new(Conn.t(), map()) :: Conn.t()
def new(conn, _params) do
changeset = Plug.change_user(conn)
render_new(conn, changeset)
end
@spec create(Conn.t(), map()) :: Conn.t()
def create(conn, %{"user" => user_params}) do
config = Plug.fetch_config(conn)
res = Plug.create_user(conn, user_params)
res
|> Controller.callback(__MODULE__, :create, config)
|> after_create()
end
@spec edit(Conn.t(), map()) :: Conn.t()
def edit(conn, _params) do
changeset = Plug.change_user(conn)
render_edit(conn, changeset)
end
@spec update(Conn.t(), map()) :: Conn.t()
def update(conn, %{"user" => user_params}) do
config = Plug.fetch_config(conn)
res = Plug.update_user(conn, user_params)
res
|> Controller.callback(__MODULE__, :update, config)
|> after_update()
end
@spec delete(Conn.t(), map()) :: Conn.t()
def delete(conn, _params) do
config = Plug.fetch_config(conn)
res = Plug.delete_user(conn)
res
|> Controller.callback(__MODULE__, :delete, config)
|> after_delete()
end
defp after_create({:ok, _user, conn}) do
conn
|> put_flash(:info, Controller.messages(conn).user_has_been_created(conn))
|> redirect(to: Controller.routes(conn).after_registration_path(conn))
end
defp after_create({:error, changeset, conn}) do
render_new(conn, changeset)
end
defp after_update({:ok, _user, conn}) do
conn
|> put_flash(:info, Controller.messages(conn).user_has_been_updated(conn))
|> redirect(to: Controller.routes(conn).after_user_updated_path(conn))
end
defp after_update({:error, changeset, conn}) do
render_edit(conn, changeset)
end
defp after_delete({:ok, _user, conn}) do
conn
|> put_flash(:info, Controller.messages(conn).user_has_been_deleted(conn))
|> redirect(to: Controller.routes(conn).after_user_deleted_path(conn))
end
defp after_delete({:error, _changeset, conn}) do
conn
|> put_flash(:info, Controller.messages(conn).user_could_not_be_deleted(conn))
|> redirect(to: Controller.router_helpers(conn).pow_registration_path(conn, :edit))
end
defp render_new(conn, changeset) do
action = Controller.router_helpers(conn).pow_registration_path(conn, :create)
ViewHelpers.render(conn, "new.html", changeset: changeset, action: action)
end
defp render_edit(conn, changeset) do
action = Controller.router_helpers(conn).pow_registration_path(conn, :update)
ViewHelpers.render(conn, "edit.html", changeset: changeset, action: action)
end
end