X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fadmin_api%2Fadmin_api_controller.ex;h=33f9689cd3a9df76819ce9027e7c38450a883faa;hb=f635b675b2cc0bc10b395cd71ae1720b0696d364;hp=9ec50bb9060c498793724da82cf386c335bd1e8b;hpb=abd0b85efd410c4d6c86957f1a725941f2165f7b;p=akkoma diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 9ec50bb90..33f9689cd 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -3,9 +3,12 @@ # 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.MastodonAPI.Admin.AccountView import Pleroma.Web.ControllerHelper, only: [json_response: 3] @@ -41,6 +44,15 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do |> json(user.nickname) end + def user_toggle_activation(conn, %{"nickname" => nickname}) do + user = User.get_by_nickname(nickname) + + {:ok, updated_user} = User.deactivate(user, !user.info.deactivated) + + conn + |> json(AccountView.render("show.json", %{user: updated_user})) + end + def tag_users(conn, %{"nicknames" => nicknames, "tags" => tags}) do with {:ok, _} <- User.tag(nicknames, tags), do: json_response(conn, :no_content, "") @@ -51,6 +63,40 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do do: json_response(conn, :no_content, "") end + def list_users(%{assigns: %{user: admin}} = conn, %{"page" => page_string}) do + with {page, _} <- Integer.parse(page_string), + users <- User.all(page, @users_page_size), + count <- User.count_all_except_one(admin), + do: + conn + |> json( + AccountView.render("index.json", + users: users, + count: count, + page_size: @users_page_size + ) + ) + end + + def search_users(%{assigns: %{user: admin}} = conn, %{"query" => term} = params) do + users = + User.search(term, + query: User.maybe_local_user_query(params["local"] == "true"), + resolve: true, + for_user: admin, + limit: @users_page_size + ) + + conn + |> json( + AccountView.render("index.json", + users: users, + count: length(users), + page_size: @users_page_size + ) + ) + end + def right_add(conn, %{"permission_group" => permission_group, "nickname" => nickname}) when permission_group in ["moderator", "admin"] do user = User.get_by_nickname(nickname)