Skip to content

Commit 725cd3b

Browse files
authored
Merge pull request #50 from danschultzer/fix-email-confirmation
Fix e-mail confirmation bug
2 parents 1b8d941 + d2fe2c5 commit 725cd3b

File tree

4 files changed

+32
-3
lines changed

4 files changed

+32
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## v0.2.2 (TBA)
4+
5+
* Fixed issue where user couldn't be created when PowEmailConfirmation was enabled
6+
37
## v0.2.1 (2019-03-16)
48

59
* Improve mix task instructions

lib/pow_assent/ecto/schema.ex

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,15 @@ defmodule PowAssent.Ecto.Schema do
110110
changeset.data.__struct__.pow_user_id_field_changeset(changeset, user_id_attrs)
111111
end
112112

113-
defp maybe_set_confirmed_at(changeset) do
113+
defp maybe_set_confirmed_at(%Changeset{data: %user_mod{}} = changeset) do
114114
case confirmable?(changeset) do
115-
true -> PowEmailConfirmation.Ecto.Schema.confirm_email_changeset(changeset)
116-
false -> changeset
115+
true ->
116+
confirmed_at = Pow.Ecto.Schema.__timestamp_for__(user_mod, :email_confirmed_at)
117+
118+
Changeset.change(changeset, email_confirmed_at: confirmed_at)
119+
120+
false ->
121+
changeset
117122
end
118123
end
119124

test/pow_assent/ecto/schema_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ defmodule PowAssent.Ecto.SchemaTest do
4343
changeset = User.user_identity_changeset(%User{}, @user_identity, %{email: "test@example.com", name: "John Doe"}, nil)
4444
assert changeset.valid?
4545
assert changeset.changes[:name] == "John Doe"
46+
47+
changeset = UserConfirmEmail.user_identity_changeset(%UserConfirmEmail{}, @user_identity, %{email: "test@example.com", name: "John Doe"}, nil)
48+
assert changeset.valid?
49+
assert changeset.changes[:email]
50+
assert changeset.changes[:email_confirmed_at]
51+
assert changeset.changes[:name] == "John Doe"
4652
end
4753

4854
test "validates unique" do

test/support/extensions/email_confirmation/user.ex

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,22 @@ defmodule PowAssent.Test.EmailConfirmation.Users.User do
77
use PowAssent.Ecto.Schema
88

99
schema "users" do
10+
field :name, :string
11+
1012
pow_user_fields()
1113

1214
timestamps()
1315
end
16+
17+
def user_identity_changeset(user_or_changeset, user_identity, attrs, user_id_attrs) do
18+
user_or_changeset
19+
|> validate_name(attrs)
20+
|> pow_assent_user_identity_changeset(user_identity, attrs, user_id_attrs)
21+
end
22+
23+
defp validate_name(changeset, attrs) do
24+
changeset
25+
|> Ecto.Changeset.cast(attrs, [:name])
26+
|> Ecto.Changeset.validate_required([:name])
27+
end
1428
end

0 commit comments

Comments
 (0)