Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## v1.0.5 (TBA)

* Added `extension_messages/1` to extension controllers and callbacks

## v1.0.4 (2019-03-13)

* Added `PowInvitation` to the `mix pow.extension.phoenix.gen.templates` and `mix pow.extension.phoenix.mailer.gen.templates` tasks
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ defmodule PowEmailConfirmation.Phoenix.ConfirmationController do
@spec respond_show({:ok | :error, map(), Conn.t()}) :: Conn.t()
def respond_show({:ok, _user, conn}) do
conn
|> put_flash(:info, messages(conn).email_has_been_confirmed(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, messages(conn).email_confirmation_failed(conn))
|> put_flash(:error, extension_messages(conn).email_confirmation_failed(conn))
|> redirect(to: redirect_to(conn))
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ defmodule PowEmailConfirmation.Phoenix.ControllerCallbacks do
defp do_warn_unconfirmed(user, conn) do
send_confirmation_email(user, conn)

error = messages(conn).email_confirmation_required_for_update(conn)
error = extension_messages(conn).email_confirmation_required_for_update(conn)
conn = Phoenix.Controller.put_flash(conn, :error, error)

{:ok, user, conn}
Expand All @@ -47,7 +47,7 @@ defmodule PowEmailConfirmation.Phoenix.ControllerCallbacks do
send_confirmation_email(user, conn)

{:ok, conn} = Plug.clear_authenticated_user(conn)
error = messages(conn).email_confirmation_required(conn)
error = extension_messages(conn).email_confirmation_required(conn)
path = return_path(conn, type)
conn =
conn
Expand All @@ -63,10 +63,13 @@ defmodule PowEmailConfirmation.Phoenix.ControllerCallbacks do

@spec send_confirmation_email(map(), Conn.t()) :: any()
def send_confirmation_email(user, conn) do
token = user.email_confirmation_token
url = routes(conn).url_for(conn, ConfirmationController, :show, [token])
url = confirmation_url(conn, user.email_confirmation_token)
email = Mailer.email_confirmation(conn, user, url)

Pow.Phoenix.Mailer.deliver(conn, email)
end

defp confirmation_url(conn, token) do
routes(conn).url_for(conn, ConfirmationController, :show, [token])
end
end
17 changes: 17 additions & 0 deletions lib/extensions/email_confirmation/phoenix/messages.ex
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
defmodule PowEmailConfirmation.Phoenix.Messages do
@moduledoc false

@doc """
Flash message to show when email has been confirmed.
"""
def email_has_been_confirmed(_conn), do: "The email address has been confirmed."

@doc """
Flash message to show when email couldn't be confirmed.
"""
def email_confirmation_failed(_conn), do: "The email address couldn't be confirmed."

@doc """
Flash message to show when user is signs in or registers but e-mail is yet
to be confirmed.
"""
def email_confirmation_required(_conn), do: "You'll need to confirm your e-mail before you can sign in. An e-mail confirmation link has been sent to you."

@doc """
Flash message to show when user updates their e-mail and requires
confirmation.
"""
def email_confirmation_required_for_update(_conn), do: "You'll need to confirm the e-mail before it's updated. An e-mail confirmation link has been sent to you."
end
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ defmodule PowInvitation.Phoenix.InvitationController do
use Pow.Extension.Phoenix.Controller.Base

alias Plug.Conn
alias Pow.Phoenix.{RegistrationController, SessionController}
alias Pow.Phoenix.SessionController
alias PowInvitation.{Phoenix.Mailer, Plug}

plug :require_authenticated when action in [:new, :create, :show]
Expand Down Expand Up @@ -34,7 +34,7 @@ defmodule PowInvitation.Phoenix.InvitationController do
deliver_email(conn, user)

conn
|> put_flash(:info, messages(conn).invitation_email_sent(conn))
|> put_flash(:info, extension_messages(conn).invitation_email_sent(conn))
|> redirect(to: routes(conn).path_for(conn, __MODULE__, :new))
end
def respond_create({:ok, user, conn}) do
Expand Down Expand Up @@ -88,7 +88,7 @@ defmodule PowInvitation.Phoenix.InvitationController do
@spec respond_update({:ok, map(), Conn.t()}) :: Conn.t()
def respond_update({:ok, _user, conn}) do
conn
|> put_flash(:info, RegistrationController.messages(conn).user_has_been_created(conn))
|> put_flash(:info, messages(conn).user_has_been_created(conn))
|> redirect(to: routes(conn).after_registration_path(conn))
end
def respond_update({:error, changeset, conn}) do
Expand All @@ -101,7 +101,7 @@ defmodule PowInvitation.Phoenix.InvitationController do
case Plug.invited_user_from_token(conn, token) do
nil ->
conn
|> put_flash(:error, messages(conn).invalid_invitation(conn))
|> put_flash(:error, extension_messages(conn).invalid_invitation(conn))
|> redirect(to: routes(conn).path_for(conn, SessionController, :new))
|> halt()

Expand Down
7 changes: 7 additions & 0 deletions lib/extensions/invitation/phoenix/messages.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
defmodule PowInvitation.Phoenix.Messages do
@moduledoc false

@doc """
Flash message to show when an invalid or expired invitation url is used.
"""
def invalid_invitation(_conn), do: "The invitation doesn't exist."

@doc """
Flash message to show when user has been invited and e-mail has been sent.
"""
def invitation_email_sent(_conn), do: "An e-mail with invitation link has been sent."
end
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ defmodule PowResetPassword.Phoenix.ResetPasswordController do

defp default_respond_create(conn) do
conn
|> put_flash(:info, messages(conn).email_has_been_sent(conn))
|> put_flash(:info, extension_messages(conn).email_has_been_sent(conn))
|> redirect(to: routes(conn).session_path(conn, :new))
end

Expand All @@ -62,7 +62,7 @@ defmodule PowResetPassword.Phoenix.ResetPasswordController do
@spec respond_update({:ok, map(), Conn.t()}) :: Conn.t()
def respond_update({:ok, _user, conn}) do
conn
|> put_flash(:info, messages(conn).password_has_been_reset(conn))
|> put_flash(:info, extension_messages(conn).password_has_been_reset(conn))
|> redirect(to: routes(conn).session_path(conn, :new))
end
def respond_update({:error, changeset, conn}) do
Expand All @@ -75,7 +75,7 @@ defmodule PowResetPassword.Phoenix.ResetPasswordController do
case Plug.user_from_token(conn, token) do
nil ->
conn
|> put_flash(:error, messages(conn).invalid_token(conn))
|> put_flash(:error, extension_messages(conn).invalid_token(conn))
|> redirect(to: routes(conn).path_for(conn, __MODULE__, :new))
|> halt()

Expand Down
13 changes: 13 additions & 0 deletions lib/extensions/reset_password/phoenix/messages.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
defmodule PowResetPassword.Phoenix.Messages do
@moduledoc false

@doc """
Flash message to show when a reset password e-mail has been sent.
"""
def email_has_been_sent(_conn), do: "An email with reset instructions has been sent to you. Please check your inbox."

@doc """
Flash message to show when a an invalid or expired reset password link is
used.
"""
def invalid_token(_conn), do: "The reset token has expired."

@doc """
Flash message to show when password has been updated.
"""
def password_has_been_reset(_conn), do: "The password has been updated."
end
2 changes: 1 addition & 1 deletion lib/pow/extension/phoenix/controllers/controller/base.ex
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ defmodule Pow.Extension.Phoenix.Controller.Base do
@messages_fallback unquote(__MODULE__).__messages_fallback__(unquote(config), __MODULE__, __ENV__)

@doc false
def messages(conn), do: unquote(__MODULE__).__messages_module__(conn, @messages_fallback)
def extension_messages(conn), do: unquote(__MODULE__).__messages_module__(conn, @messages_fallback)

@doc false
def routes(conn), do: Controller.routes(conn, Routes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ defmodule Pow.Extension.Phoenix.ControllerCallbacks.Base do
end
end
"""
alias Pow.{Config, Extension.Phoenix.Controller.Base}
alias Pow.{Config, Extension.Phoenix.Controller.Base, Phoenix.Controller}

@callback before_process(atom(), atom(), any(), Config.t()) :: any()
@callback before_respond(atom(), atom(), any(), Config.t()) :: any()
Expand All @@ -23,9 +23,11 @@ defmodule Pow.Extension.Phoenix.ControllerCallbacks.Base do
quote do
@behaviour unquote(__MODULE__)

import Base, only: [__define_helper_methods__: 1]
require Base
require Controller

__define_helper_methods__(unquote(config))
Base.__define_helper_methods__(unquote(config))
Controller.__define_helper_methods__()

@before_compile unquote(__MODULE__)
end
Expand Down
7 changes: 7 additions & 0 deletions lib/pow/phoenix/controllers/controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ defmodule Pow.Phoenix.Controller do

defp pow_layout(conn, _config), do: ViewHelpers.layout(conn)

unquote(__MODULE__).__define_helper_methods__()
end
end

@doc false
defmacro __define_helper_methods__() do
quote do
@doc """
See `Pow.Phoenix.Controller.messages/2` for more.

Expand Down