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/extensions/email_confirmation/phoenix/controllers/controller_callbacks.ex
defmodule PowEmailConfirmation.Phoenix.ControllerCallbacks do
@moduledoc false
use Pow.Extension.Phoenix.ControllerCallbacks.Base
alias Pow.Phoenix.Controller
alias PowEmailConfirmation.Phoenix.Mailer
def callback(Pow.Phoenix.RegistrationController, :create, {:ok, user, conn}, _config) do
send_confirmation_email(user, conn)
{:ok, user, conn}
end
def callback(Pow.Phoenix.RegistrationController, :update, {:ok, user, conn}, _config) do
maybe_send_confirmation_email(user, conn)
{:ok, user, conn}
end
defp maybe_send_confirmation_email(user, conn) do
case should_send_email?(user, conn.private[:user_before_update]) do
true -> send_confirmation_email(user, conn)
false -> nil
end
end
defp should_send_email?(_user, nil), do: false
defp should_send_email?(%{email_confirmed_at: confirmed_at}, _user) when not is_nil(confirmed_at), do: false
defp should_send_email?(%{email_confirmed_at: nil, email_confirmation_token: new_token}, %{email_confirmation_token: old_token}),
do: new_token != old_token
defp send_confirmation_email(user, conn) do
token = user.email_confirmation_token
url = Controller.router_helpers(conn).pow_email_confirmation_confirmation_path(conn, :show, token)
email = Mailer.EmailConfirmationMailer.email_confirmation(user, url)
Pow.Phoenix.Mailer.deliver(conn, email)
end
end