Current section
Files
Jump to
Current section
Files
priv/templates/curator_confirmable.install/controller.ex
defmodule <%= base %>.ConfirmationController do
use <%= base %>.Web, :controller
alias <%= base %>.User
plug CuratorConfirmable.VerifyToken, %{ handler: __MODULE__ } when action in [:edit]
def new(conn, _params) do
user = Curator.PlugHelper.current_resource(conn)
data = case user do
nil -> %{}
%User{email: email} -> %{email: email}
end
changeset = CuratorConfirmable.request_confirmation_email_changeset(data)
render(conn, "new.html", changeset: changeset)
end
def create(conn, %{"confirmation" => %{"email" => email}}) do
changeset = CuratorConfirmable.request_confirmation_email_changeset(%{email: email})
if changeset.valid? do
user = <%= base %>.Repo.get_by(User, email: email)
if user do
unless CuratorConfirmable.confirmed?(user) do
<%= base %>.CuratorHooks.send_email(conn, :confirmation, user)
end
end
conn
|> put_flash(:info, "Confirmation email sent.")
|> redirect(to: "/")
else
render(conn, "new.html", changeset: %{changeset | action: :create})
end
end
def edit(conn, _params) do
user = conn.private[:curator_confirmable_user]
CuratorConfirmable.confirm!(user)
conn
|> Curator.after_extension(:confirmation, user)
end
def token_error(conn, :invalid) do
conn
|> put_flash(:danger, "Invalid confirmation token.")
|> redirect(to: "/")
|> halt
end
def token_error(conn, :expired) do
conn
|> put_flash(:danger, "Confirmation token expired.")
|> redirect(to: "/")
|> halt
end
end