MRF: add user allowlist module
authorWilliam Pitcock <nenolod@dereferenced.org>
Mon, 26 Nov 2018 23:23:43 +0000 (23:23 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Mon, 26 Nov 2018 23:51:58 +0000 (23:51 +0000)
lib/pleroma/web/activity_pub/mrf/user_allowlist.ex [new file with mode: 0644]

diff --git a/lib/pleroma/web/activity_pub/mrf/user_allowlist.ex b/lib/pleroma/web/activity_pub/mrf/user_allowlist.ex
new file mode 100644 (file)
index 0000000..3503d86
--- /dev/null
@@ -0,0 +1,23 @@
+defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy do
+  alias Pleroma.Config
+
+  @behaviour Pleroma.Web.ActivityPub.MRF
+
+  defp filter_by_list(object, []), do: {:ok, object}
+
+  defp filter_by_list(%{"actor" => actor} = object, allow_list) do
+    if actor in allow_list do
+      {:ok, object}
+    else
+      {:reject, nil}
+    end
+  end
+
+  @impl true
+  def filter(object) do
+    actor_info = URI.parse(object["actor"])
+    allow_list = Config.get([:mrf_user_allowlist, String.to_atom(actor_info.host)], [])
+
+    filter_by_list(object, allow_list)
+  end
+end