Packages
pow
1.0.14
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/ecto/context.ex
defmodule PowEmailConfirmation.Ecto.Context do
@moduledoc """
Handles e-mail confirmation context for user.
"""
alias Pow.{Config, Ecto.Context}
alias PowEmailConfirmation.Ecto.Schema
@doc """
Finds a user by the `email_confirmation_token` column.
"""
@spec get_by_confirmation_token(binary(), Config.t()) :: Context.user() | nil
def get_by_confirmation_token(token, config),
do: Context.get_by([email_confirmation_token: token], config)
@doc """
Checks if the users current e-mail is unconfirmed.
"""
@spec current_email_unconfirmed?(Context.user(), Config.t()) :: boolean()
def current_email_unconfirmed?(%{unconfirmed_email: nil, email_confirmation_token: token, email_confirmed_at: nil}, _config) when not is_nil(token),
do: true
def current_email_unconfirmed?(_user, _config),
do: false
@doc """
Checks if the user has a pending e-mail change.
"""
@spec pending_email_change?(Context.user(), Config.t()) :: boolean()
def pending_email_change?(%{unconfirmed_email: email, email_confirmation_token: token}, _config) when not is_nil(email) and not is_nil(token),
do: true
def pending_email_change?(_user, _config), do: false
@doc """
Confirms e-mail.
See `PowEmailConfirmation.Ecto.Schema.confirm_email_changeset/1`.
"""
@spec confirm_email(Context.user(), Config.t()) :: {:ok, Context.user()} | {:error, Context.changeset()}
def confirm_email(user, config) do
user
|> Schema.confirm_email_changeset()
|> Context.do_update(config)
end
end