aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-01-09 17:40:15 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-01-09 17:40:15 +0700
commit1b06e6fdf3d879422d6cb0fe57cfcef223b54196 (patch)
tree63119a396a5b4276553cf8d8ccc6e465f6051f72 /lib
parent28afcb7c31a357e05c6cb23645539389f37a15f4 (diff)
downloadpleroma-1b06e6fdf3d879422d6cb0fe57cfcef223b54196.tar.gz
only non-reblogs, self-authored, public statuses can be pinned
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/common_api/common_api.ex14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index 6d22813b2..7ec6aa0ea 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -165,8 +165,18 @@ defmodule Pleroma.Web.CommonAPI do
})
end
- def pin(id_or_ap_id, user) do
- with %Activity{} = activity <- get_by_id_or_ap_id(id_or_ap_id),
+ def pin(id_or_ap_id, %{ap_id: user_ap_id} = user) do
+ with %Activity{
+ actor: ^user_ap_id,
+ data: %{
+ "type" => "Create",
+ "object" => %{
+ "to" => object_to,
+ "type" => "Note"
+ }
+ }
+ } = activity <- get_by_id_or_ap_id(id_or_ap_id),
+ true <- Enum.member?(object_to, "https://www.w3.org/ns/activitystreams#Public"),
%{valid?: true} = info_changeset <-
Pleroma.User.Info.add_pinnned_activity(user.info, activity),
changeset <-