--- /dev/null
+defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do
+ alias Pleroma.User
+ @behaviour Pleroma.Web.ActivityPub.MRF
+
+ def filter(object) do
+ if object["type"] == "Create" do
+ user = User.get_by_ap_id(object["actor"])
+ public = "https://www.w3.org/ns/activitystreams#Public"
+
+ #Determine visibility
+ visibility =
+ cond do
+ #Public
+ public in object["to"] -> "p"
+ #Unlisted
+ public in object["cc"] -> "u"
+ #Followers-only
+ user.follower_address in object["to"] -> "f"
+ #Direct
+ true -> "d"
+ end
+
+ case visibility do
+ "p" -> {:ok, object}
+ "u" -> {:ok, object}
+ _ -> {:reject, nil}
+ end
+ else
+ {:ok, object}
+ end
+ end
+
+end