diff options
author | Maxim Filippov <colixer@gmail.com> | 2019-03-27 03:51:59 +0500 |
---|---|---|
committer | Maxim Filippov <colixer@gmail.com> | 2019-03-27 03:51:59 +0500 |
commit | 3cf7539bca56ce1118bbedaba547d371f3f20eed (patch) | |
tree | b466f6efea4506bdff5ed44b17c978ede4835f12 /lib/pleroma/web/admin_api/admin_api_controller.ex | |
parent | 15aa94f40f73444d67da7cb71ec219b97ec5142e (diff) | |
download | pleroma-3cf7539bca56ce1118bbedaba547d371f3f20eed.tar.gz |
Add more user filters + move search to its own module
Diffstat (limited to 'lib/pleroma/web/admin_api/admin_api_controller.ex')
-rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 6d9bf2895..3fa9c6909 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -3,17 +3,18 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.AdminAPI.AdminAPIController do - @users_page_size 50 - use Pleroma.Web, :controller alias Pleroma.User alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.AdminAPI.AccountView + alias Pleroma.Web.AdminAPI.Search import Pleroma.Web.ControllerHelper, only: [json_response: 3] require Logger + @users_page_size 50 + action_fallback(:errors) def user_delete(conn, %{"nickname" => nickname}) do @@ -63,17 +64,17 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do do: json_response(conn, :no_content, "") end - def list_users(%{assigns: %{user: admin}} = conn, params) do + def list_users(conn, params) do {page, page_size} = page_params(params) + filters = maybe_parse_filters(params["filters"]) + + search_params = %{ + query: params["query"], + page: page, + page_size: page_size + } - with {:ok, users, count} <- - User.search_for_admin(%{ - query: params["query"], - admin: admin, - local: params["local_only"] == "true", - page: page, - page_size: page_size - }), + with {:ok, users, count} <- Search.user(Map.merge(search_params, filters)), do: conn |> json( @@ -85,6 +86,19 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do ) end + @filters ~w(local external active deactivated) + + defp maybe_parse_filters(filters) when is_nil(filters) or filters == "", do: %{} + + @spec maybe_parse_filters(String.t()) :: %{required(String.t()) => true} | %{} + defp maybe_parse_filters(filters) do + filters + |> String.split(",") + |> Enum.filter(&Enum.member?(@filters, &1)) + |> Enum.map(&String.to_atom(&1)) + |> Enum.into(%{}, &{&1, true}) + end + def right_add(conn, %{"permission_group" => permission_group, "nickname" => nickname}) when permission_group in ["moderator", "admin"] do user = User.get_by_nickname(nickname) |