diff options
author | lambda <lain@soykaf.club> | 2019-03-27 11:33:13 +0000 |
---|---|---|
committer | lambda <lain@soykaf.club> | 2019-03-27 11:33:13 +0000 |
commit | 926bf114b7385761c3cac50e262d061f47fda4b8 (patch) | |
tree | bf223ef4d3a62bdea499a209a76af37e889cdcd6 /lib/pleroma/web/admin_api/admin_api_controller.ex | |
parent | a5f141d9d524fc130312d1badd7303add6f92907 (diff) | |
parent | 3cf7539bca56ce1118bbedaba547d371f3f20eed (diff) | |
download | pleroma-926bf114b7385761c3cac50e262d061f47fda4b8.tar.gz |
Merge branch 'feature/more-user-filters' into 'develop'
Add more user filters + move search to its own module
See merge request pleroma/pleroma!982
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) |