From: William Pitcock Date: Sat, 26 May 2018 11:07:04 +0000 (+0000) Subject: activitypub transmogrifier: use fetch_latest_follow to verify a follow object exists X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=7e873756e7e2c669f9dc460b7d6356fb7d25b9dd;p=akkoma activitypub transmogrifier: use fetch_latest_follow to verify a follow object exists --- 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