Ensure self-announces do not widen the audience of the original post

This commit is contained in:
Thibaut Girka 2019-10-01 17:49:52 +02:00
parent 1f0be71ea4
commit fe538973dd
2 changed files with 4 additions and 3 deletions
lib/pleroma/web/activity_pub

View file

@ -346,7 +346,7 @@ def announce(
local \\ true, local \\ true,
public \\ true public \\ true
) do ) do
with true <- is_announceable?(object, user), with true <- is_announceable?(object, user, public),
announce_data <- make_announce_data(user, object, activity_id, public), announce_data <- make_announce_data(user, object, activity_id, public),
{:ok, activity} <- insert(announce_data, local), {:ok, activity} <- insert(announce_data, local),
{:ok, object} <- add_announce_to_object(activity, object), {:ok, object} <- add_announce_to_object(activity, object),

View file

@ -27,8 +27,9 @@ def is_private?(activity) do
end end
end end
def is_announceable?(activity, user) do def is_announceable?(activity, user, public \\ true) do
is_public?(activity) || activity.data["actor"] == user.ap_id is_public?(activity) ||
(!public && is_private?(activity) && activity.data["actor"] == user.ap_id)
end end
def is_direct?(%Activity{data: %{"directMessage" => true}}), do: true def is_direct?(%Activity{data: %{"directMessage" => true}}), do: true