diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 47 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 3 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex | 12 | ||||
| -rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 22 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 5 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 1 | 
6 files changed, 50 insertions, 40 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 01063c813..f49ede149 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -764,13 +764,41 @@ defmodule Pleroma.User do      Repo.all(query)    end -  @spec search_for_admin(binary(), %{ +  @spec search_for_admin(%{ +          local: boolean(), +          page: number(), +          page_size: number() +        }) :: {:ok, [Pleroma.User.t()], number()} +  def search_for_admin(%{query: nil, local: local, page: page, page_size: page_size}) do +    query = +      from(u in User, order_by: u.id) +      |> maybe_local_user_query(local) + +    paginated_query = +      query +      |> paginate(page, page_size) + +    count = +      query +      |> Repo.aggregate(:count, :id) + +    {:ok, Repo.all(paginated_query), count} +  end + +  @spec search_for_admin(%{ +          query: binary(),            admin: Pleroma.User.t(),            local: boolean(),            page: number(),            page_size: number()          }) :: {:ok, [Pleroma.User.t()], number()} -  def search_for_admin(term, %{admin: admin, local: local, page: page, page_size: page_size}) do +  def search_for_admin(%{ +        query: term, +        admin: admin, +        local: local, +        page: page, +        page_size: page_size +      }) do      term = String.trim_leading(term, "@")      local_paginated_query = @@ -789,21 +817,6 @@ defmodule Pleroma.User do      {:ok, do_search(search_query, admin), count}    end -  @spec all_for_admin(number(), number()) :: {:ok, [Pleroma.User.t()], number()} -  def all_for_admin(page, page_size) do -    query = from(u in User, order_by: u.id) - -    paginated_query = -      query -      |> paginate(page, page_size) - -    count = -      query -      |> Repo.aggregate(:count, :id) - -    {:ok, Repo.all(paginated_query), count} -  end -    def search(query, resolve \\ false, for_user \\ nil) do      # Strip the beginning @ off if there is a query      query = String.trim_leading(query, "@") diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 783491b67..adb42b9ab 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -309,12 +309,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do    def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ true) do      user = User.get_cached_by_ap_id(actor) +    to = object.data["to"] || [] ++ object.data["cc"] || []      data = %{        "type" => "Delete",        "actor" => actor,        "object" => id, -      "to" => [user.follower_address, "https://www.w3.org/ns/activitystreams#Public"] +      "to" => to      }      with {:ok, _} <- Object.delete(object), diff --git a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex index 7c6ad582a..34665a3a6 100644 --- a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex @@ -23,15 +23,21 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy do    defp score_displayname(_), do: 0.0    defp determine_if_followbot(%User{nickname: nickname, name: displayname}) do +    # nickname will always be a binary string because it's generated by Pleroma.      nick_score =        nickname        |> String.downcase()        |> score_nickname() +    # displayname will either be a binary string or nil, if a displayname isn't set.      name_score = -      displayname -      |> String.downcase() -      |> score_displayname() +      if is_binary(displayname) do +        displayname +        |> String.downcase() +        |> score_displayname() +      else +        0.0 +      end      nick_score + name_score    end diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index aae02cab8..75c2c6061 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -63,28 +63,14 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do           do: json_response(conn, :no_content, "")    end -  def list_users(conn, params) do -    {page, page_size} = page_params(params) - -    with {:ok, users, count} <- User.all_for_admin(page, page_size), -         do: -           conn -           |> json( -             AccountView.render("index.json", -               users: users, -               count: count, -               page_size: page_size -             ) -           ) -  end - -  def search_users(%{assigns: %{user: admin}} = conn, %{"query" => query} = params) do +  def list_users(%{assigns: %{user: admin}} = conn, params) do      {page, page_size} = page_params(params)      with {:ok, users, count} <- -           User.search_for_admin(query, %{ +           User.search_for_admin(%{ +             query: params["query"],               admin: admin, -             local: params["local"] == "true", +             local: params["local_only"] == "true",               page: page,               page_size: page_size             }), diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 4fe66f856..8c58f4545 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -190,6 +190,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do    end    defp add_link_headers(conn, method, activities, param \\ nil, params \\ %{}) do +    params = +      conn.params +      |> Map.drop(["since_id", "max_id"]) +      |> Map.merge(params) +      last = List.last(activities)      first = List.first(activities) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index fc322756a..65a90e31e 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -140,7 +140,6 @@ defmodule Pleroma.Web.Router do      pipe_through([:admin_api, :oauth_write])      get("/users", AdminAPIController, :list_users) -    get("/users/search", AdminAPIController, :search_users)      delete("/user", AdminAPIController, :user_delete)      patch("/users/:nickname/toggle_activation", AdminAPIController, :user_toggle_activation)      post("/user", AdminAPIController, :user_create) | 
