diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-05-26 11:07:04 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-05-26 11:20:52 +0000 |
commit | 7e873756e7e2c669f9dc460b7d6356fb7d25b9dd (patch) | |
tree | 96f2f876fbf181dd457e2c0f309d875386abe50a | |
parent | 7cf3cf77cfffd1e1f6187d7a3485bf2a5d18ca00 (diff) | |
download | pleroma-7e873756e7e2c669f9dc460b7d6356fb7d25b9dd.tar.gz pleroma-7e873756e7e2c669f9dc460b7d6356fb7d25b9dd.zip |
activitypub transmogrifier: use fetch_latest_follow to verify a follow object exists
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 41198d4e6..ff83dfd36 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -171,12 +171,16 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do with %User{} = followed <- User.get_or_fetch_by_ap_id(actor), {:ok, follow_activity} <- get_follow_activity(follow_object), %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity["actor"]), + follow_activity <- Utils.fetch_latest_follow(follower, followed), + false <- is_nil(follow_activity), {:ok, activity} <- ActivityPub.insert(data, true) do if not User.following?(follower, followed) do {:ok, follower} = User.follow(follower, followed) end {:ok, activity} + else + _e -> :error end end @@ -186,10 +190,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do with %User{} = followed <- User.get_or_fetch_by_ap_id(actor), {:ok, follow_activity} <- get_follow_activity(follow_object), %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity["actor"]), + follow_activity <- Utils.fetch_latest_follow(follower, followed), + false <- is_nil(follow_activity), {:ok, activity} <- ActivityPub.insert(data, true) do User.unfollow(follower, followed) {:ok, activity} + else + _e -> :error end end |