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/ecto/schema.ex
defmodule PowEmailConfirmation.Ecto.Schema do
@moduledoc false
use Pow.Extension.Ecto.Schema.Base
alias Ecto.Changeset
alias Pow.Config
def validate!(config, login_field) do
case login_field do
:email -> config
_ -> raise_login_field_not_email_error()
end
end
def attrs(_config) do
[{:email_confirmation_token, :string},
{:email_confirmed_at, :utc_datetime}]
end
def indexes(_config) do
[{:email_confirmation_token, true}]
end
def changeset(changeset, _attrs, _config) do
changeset
|> put_email_confirmation_token()
|> Changeset.validate_required([:email_confirmation_token])
|> Changeset.unique_constraint(:email_confirmation_token)
end
defp put_email_confirmation_token(changeset) do
current_email = changeset.data.email
changeset
|> Changeset.get_field(:email)
|> case do
^current_email -> changeset
_new_email -> Changeset.put_change(changeset, :email_confirmation_token, UUID.uuid1())
end
end
@spec raise_login_field_not_email_error :: no_return
defp raise_login_field_not_email_error do
Config.raise_error("The `:login_field` has to be `:email` for PowEmailConfirmation to work")
end
end