Implement delete activity
[akkoma] / lib / pleroma / web / activity_pub / activity_pub_controller.ex
index d23c54933332494d0599c92e6e7ca83417c9d386..a3f736fee1043891744ed02796134cf75e609443 100644 (file)
@@ -181,6 +181,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
     })
   end
 
+  def handle_user_activity(user, %{"type" => "Delete"} = params) do
+    with %Object{} = object <- Object.normalize(params["object"]),
+         true <- user.info.is_moderator || user.ap_id == object.data["actor"],
+         {:ok, delete} <- ActivityPub.delete(object) do
+      {:ok, delete}
+    else
+      _ -> {:error, "Can't delete object"}
+    end
+  end
+
   def handle_user_activity(_, _) do
     {:error, "Unhandled activity type"}
   end