summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2022-12-15 23:07:49 +0000
committerlain <lain@soykaf.club>2022-12-15 23:07:49 +0000
commitc0cfc454ba7ecaa5cc729c7916b72226df2e87ff (patch)
tree5257522288933c4f250712b560a57d6f4f8d26ed
parent204fd6faae8c39706a5ded42c7cc4fbc71a733bc (diff)
parent62c27e016441d8f0649fea0ea9cfe0646e2b6f11 (diff)
Merge branch 'from/upstream-develop/tusooa/register-approval' into 'develop'
Fix failure when registering a user with no email when approval required Closes #3021 See merge request pleroma/pleroma!3807
-rw-r--r--lib/pleroma/user.ex6
-rw-r--r--test/pleroma/user_test.exs15
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index b422e5c1d..d2ae08888 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -905,7 +905,7 @@ defmodule Pleroma.User do
end
end
- defp send_user_approval_email(user) do
+ defp send_user_approval_email(%User{email: email} = user) when is_binary(email) do
user
|> Pleroma.Emails.UserEmail.approval_pending_email()
|> Pleroma.Emails.Mailer.deliver_async()
@@ -913,6 +913,10 @@ defmodule Pleroma.User do
{:ok, :enqueued}
end
+ defp send_user_approval_email(_user) do
+ {:ok, :skipped}
+ end
+
defp send_admin_approval_emails(user) do
all_superusers()
|> Enum.filter(fn user -> not is_nil(user.email) end)
diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs
index 303598fad..a58c8f68b 100644
--- a/test/pleroma/user_test.exs
+++ b/test/pleroma/user_test.exs
@@ -591,6 +591,21 @@ defmodule Pleroma.UserTest do
refute_email_sent()
end
+ test "it works when the registering user does not provide an email" do
+ clear_config([Pleroma.Emails.Mailer, :enabled], false)
+ clear_config([:instance, :account_activation_required], false)
+ clear_config([:instance, :account_approval_required], true)
+
+ cng = User.register_changeset(%User{}, @full_user_data |> Map.put(:email, ""))
+
+ # The user is still created
+ assert {:ok, %User{nickname: "nick"}} = User.register(cng)
+
+ # No emails are sent
+ ObanHelpers.perform_all()
+ refute_email_sent()
+ end
+
test "it requires an email, name, nickname and password, bio is optional when account_activation_required is enabled" do
clear_config([:instance, :account_activation_required], true)