summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-07-17 14:55:05 -0500
committerAlex Gleason <alex@alexgleason.me>2021-07-17 14:55:05 -0500
commit54dbcfe02a05a75d7fe7591335df74743930182d (patch)
tree1bda3dc445d305c3e0ac540c33398f682ccae0d5 /lib
parentf67d00d12b5d66a960bd7b3822a5fa4418348e18 (diff)
downloadpleroma-54dbcfe02a05a75d7fe7591335df74743930182d.tar.gz
pleroma-54dbcfe02a05a75d7fe7591335df74743930182d.zip
AdminAPI: add DELETE /instances/:instance to delete all content from a remote instance
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/admin_api/controllers/instance_controller.ex13
-rw-r--r--lib/pleroma/web/router.ex1
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/pleroma/web/admin_api/controllers/instance_controller.ex b/lib/pleroma/web/admin_api/controllers/instance_controller.ex
index ad6ea89ef..2fc2fb442 100644
--- a/lib/pleroma/web/admin_api/controllers/instance_controller.ex
+++ b/lib/pleroma/web/admin_api/controllers/instance_controller.ex
@@ -7,6 +7,7 @@ defmodule Pleroma.Web.AdminAPI.InstanceController do
import Pleroma.Web.ControllerHelper, only: [fetch_integer_param: 3]
+ alias Pleroma.Instances.Instance
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.AdminAPI
alias Pleroma.Web.Plugs.OAuthScopesPlug
@@ -21,6 +22,12 @@ defmodule Pleroma.Web.AdminAPI.InstanceController do
when action in [:list_instance_statuses]
)
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:write:accounts", "admin:write:statuses"]}
+ when action in [:delete_instance]
+ )
+
action_fallback(AdminAPI.FallbackController)
def list_instance_statuses(conn, %{"instance" => instance} = params) do
@@ -41,6 +48,12 @@ defmodule Pleroma.Web.AdminAPI.InstanceController do
|> render("index.json", %{total: result[:total], activities: result[:items], as: :activity})
end
+ def delete_instance(conn, %{"instance" => instance}) do
+ with {:ok, _job} <- Instance.delete_users_and_activities(instance) do
+ json(conn, instance)
+ end
+ end
+
defp page_params(params) do
{
fetch_integer_param(params, "page", 1),
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index dbc7df104..1f465b697 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -210,6 +210,7 @@ defmodule Pleroma.Web.Router do
get("/users/:nickname/chats", AdminAPIController, :list_user_chats)
get("/instances/:instance/statuses", InstanceController, :list_instance_statuses)
+ delete("/instances/:instance", InstanceController, :delete_instance)
get("/instance_document/:name", InstanceDocumentController, :show)
patch("/instance_document/:name", InstanceDocumentController, :update)