AdminAPI: Omit relay user from users list

This commit is contained in:
Maxim Filippov 2019-10-31 02:26:02 +03:00
parent 59a149c69a
commit 6f9d3d30fa
3 changed files with 40 additions and 2 deletions

View file

@ -11,13 +11,17 @@ defmodule Pleroma.Web.ActivityPub.Relay do
def get_actor do
actor =
"#{Pleroma.Web.Endpoint.url()}/relay"
relay_ap_id()
|> User.get_or_create_service_actor_by_ap_id()
{:ok, actor} = User.set_invisible(actor, true)
actor
end
def relay_ap_id do
"#{Pleroma.Web.Endpoint.url()}/relay"
end
@spec follow(String.t()) :: {:ok, Activity.t()} | {:error, any()}
def follow(target_instance) do
with %User{} = local_user <- get_actor(),

View file

@ -333,7 +333,8 @@ def list_users(conn, params) do
email: params["email"]
}
with {:ok, users, count} <- Search.user(Map.merge(search_params, filters)),
with {:ok, users, _count} <- Search.user(Map.merge(search_params, filters)),
{:ok, users, count} <- filter_relay_user(users),
do:
conn
|> json(
@ -345,6 +346,12 @@ def list_users(conn, params) do
)
end
defp filter_relay_user(users) do
filtered_users = Enum.reject(users, &(&1.ap_id == Relay.relay_ap_id()))
{:ok, filtered_users, length(filtered_users)}
end
@filters ~w(local external active deactivated is_admin is_moderator)
@spec maybe_parse_filters(String.t()) :: %{required(String.t()) => true} | %{}

View file

@ -13,6 +13,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
alias Pleroma.Tests.ObanHelpers
alias Pleroma.User
alias Pleroma.UserInviteToken
alias Pleroma.Web.ActivityPub.Relay
alias Pleroma.Web.CommonAPI
alias Pleroma.Web.MediaProxy
import Pleroma.Factory
@ -1044,6 +1045,32 @@ test "it works with multiple filters" do
]
}
end
test "it omits relay user", %{admin: admin} do
assert %User{} = Relay.get_actor()
conn =
build_conn()
|> assign(:user, admin)
|> get("/api/pleroma/admin/users")
assert json_response(conn, 200) == %{
"count" => 1,
"page_size" => 50,
"users" => [
%{
"deactivated" => admin.deactivated,
"id" => admin.id,
"nickname" => admin.nickname,
"roles" => %{"admin" => true, "moderator" => false},
"local" => true,
"tags" => [],
"avatar" => User.avatar_url(admin) |> MediaProxy.url(),
"display_name" => HTML.strip_tags(admin.name || admin.nickname)
}
]
}
end
end
test "PATCH /api/pleroma/admin/users/activate" do