Respect visibility in API.

This commit is contained in:
lain 2018-02-18 15:50:34 +01:00
commit 5d89997a70
3 changed files with 17 additions and 4 deletions

View file

@ -131,7 +131,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
query = from activity in Activity,
where: fragment("?->>'type' = ? and ?->>'context' = ?", activity.data, "Create", activity.data, ^context),
order_by: [desc: :id]
query = restrict_blocked(query, opts)
query = query
|> restrict_blocked(opts)
|> restrict_recipients(["https://www.w3.org/ns/activitystreams#Public"], opts["user"])
Repo.all(query)
end
@ -313,4 +315,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
end
end
end
def visible_for_user?(activity, nil) do
"https://www.w3.org/ns/activitystreams#Public" in (activity.data["to"] ++ (activity.data["cc"] || []))
end
def visible_for_user?(activity, user) do
x = [user.ap_id | user.following]
y = (activity.data["to"] ++ (activity.data["cc"] || []))
visible_for_user?(activity, nil) || Enum.any?(x, &(&1 in y))
end
end