Skip to content

Commit

Permalink
Merge pull request #50 from danschultzer/fix-email-confirmation
Browse files Browse the repository at this point in the history
Fix e-mail confirmation bug
  • Loading branch information
danschultzer committed Mar 25, 2019
2 parents 1b8d941 + d2fe2c5 commit 725cd3b
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 3 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## v0.2.2 (TBA)

* Fixed issue where user couldn't be created when PowEmailConfirmation was enabled

## v0.2.1 (2019-03-16)

* Improve mix task instructions
Expand Down
11 changes: 8 additions & 3 deletions lib/pow_assent/ecto/schema.ex
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,15 @@ defmodule PowAssent.Ecto.Schema do
changeset.data.__struct__.pow_user_id_field_changeset(changeset, user_id_attrs)
end

defp maybe_set_confirmed_at(changeset) do
defp maybe_set_confirmed_at(%Changeset{data: %user_mod{}} = changeset) do
case confirmable?(changeset) do
true -> PowEmailConfirmation.Ecto.Schema.confirm_email_changeset(changeset)
false -> changeset
true ->
confirmed_at = Pow.Ecto.Schema.__timestamp_for__(user_mod, :email_confirmed_at)

Changeset.change(changeset, email_confirmed_at: confirmed_at)

false ->
changeset
end
end

Expand Down
6 changes: 6 additions & 0 deletions test/pow_assent/ecto/schema_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@ defmodule PowAssent.Ecto.SchemaTest do
changeset = User.user_identity_changeset(%User{}, @user_identity, %{email: "[email protected]", name: "John Doe"}, nil)
assert changeset.valid?
assert changeset.changes[:name] == "John Doe"

changeset = UserConfirmEmail.user_identity_changeset(%UserConfirmEmail{}, @user_identity, %{email: "[email protected]", name: "John Doe"}, nil)
assert changeset.valid?
assert changeset.changes[:email]
assert changeset.changes[:email_confirmed_at]
assert changeset.changes[:name] == "John Doe"
end

test "validates unique" do
Expand Down
14 changes: 14 additions & 0 deletions test/support/extensions/email_confirmation/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,22 @@ defmodule PowAssent.Test.EmailConfirmation.Users.User do
use PowAssent.Ecto.Schema

schema "users" do
field :name, :string

pow_user_fields()

timestamps()
end

def user_identity_changeset(user_or_changeset, user_identity, attrs, user_id_attrs) do
user_or_changeset
|> validate_name(attrs)
|> pow_assent_user_identity_changeset(user_identity, attrs, user_id_attrs)
end

defp validate_name(changeset, attrs) do
changeset
|> Ecto.Changeset.cast(attrs, [:name])
|> Ecto.Changeset.validate_required([:name])
end
end

0 comments on commit 725cd3b

Please sign in to comment.