aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/admin_api/controllers
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2020-08-31 19:56:05 -0500
committerAlex Gleason <alex@alexgleason.me>2020-09-11 14:09:58 -0500
commitb40a627ab02f9f63eac42ce6fc65282fc6cb6b92 (patch)
tree6bbd2751cb92d2c87b5b9be07b76b891631d95f2 /lib/pleroma/web/admin_api/controllers
parentf88dc1937e5aa4208143fa68400a5c38a1b9eddf (diff)
downloadpleroma-b40a627ab02f9f63eac42ce6fc65282fc6cb6b92.tar.gz
AdminAPI: delete a chat message
Diffstat (limited to 'lib/pleroma/web/admin_api/controllers')
-rw-r--r--lib/pleroma/web/admin_api/controllers/chat_controller.ex37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex
new file mode 100644
index 000000000..bcce824d2
--- /dev/null
+++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex
@@ -0,0 +1,37 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.AdminAPI.ChatController do
+ use Pleroma.Web, :controller
+
+ alias Pleroma.Activity
+ alias Pleroma.ModerationLog
+ alias Pleroma.Plugs.OAuthScopesPlug
+ alias Pleroma.Web.CommonAPI
+
+ require Logger
+
+ plug(Pleroma.Web.ApiSpec.CastAndValidate)
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["write:chats"], admin: true} when action in [:delete_message]
+ )
+
+ action_fallback(Pleroma.Web.AdminAPI.FallbackController)
+
+ defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ChatOperation
+
+ def delete_message(%{assigns: %{user: user}} = conn, %{message_id: id}) do
+ with {:ok, %Activity{}} <- CommonAPI.delete(id, user) do
+ ModerationLog.insert_log(%{
+ action: "chat_message_delete",
+ actor: user,
+ subject_id: id
+ })
+
+ json(conn, %{})
+ end
+ end
+end