diff --git a/changelog.d/user-query-is-active.fix b/changelog.d/user-query-is-active.fix new file mode 100644 index 000000000..8f28d8a0e --- /dev/null +++ b/changelog.d/user-query-is-active.fix @@ -0,0 +1 @@ +Fix deactivated users being counted in followers collections and getting admin emails, because User.Query ignored the is_active key diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index a8e08e335..c0566c63d 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1476,7 +1476,7 @@ defmodule Pleroma.User do |> where([u], not u.hide_follows) |> select([u], u.id) - User.Query.build(%{is_active: true}) + User.Query.build(%{deactivated: false}) |> where([u], u.id not in ^[user.id, current_user.id]) |> join(:inner, [u], r in FollowingRelationship, as: :followers_relationships, diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 86e873037..32d582b50 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -3009,6 +3009,18 @@ defmodule Pleroma.UserTest do assert [%{id: ^id2}] = User.get_familiar_followers(user3, user1) end + + test "does not return deactivated users" do + user1 = insert(:user) + user2 = insert(:user) + user3 = insert(:user) + + User.follow(user1, user2) + User.follow(user2, user3) + {:ok, _} = User.set_activation(user2, false) + + assert [] = User.get_familiar_followers(user3, user1) + end end describe "account endorsements" do