summaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/object.ex4
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex4
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex
index c8d339c19..468549c87 100644
--- a/lib/pleroma/object.ex
+++ b/lib/pleroma/object.ex
@@ -230,4 +230,8 @@ defmodule Pleroma.Object do
_ -> :noop
end
end
+
+ def get_ap_id(%{"id" => id}), do: id
+ def get_ap_id(id) when is_binary(id), do: id
+ def get_ap_id(_), do: {:error, "Object is not a string and has no id."}
end
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 36340a3a1..6c4259c02 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -464,8 +464,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
%{"type" => "Follow", "object" => followed, "actor" => follower, "id" => id} = data,
_options
) do
- with %User{local: true} = followed <- User.get_cached_by_ap_id(followed),
- {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(follower),
+ with %User{local: true} = followed <- User.get_cached_by_ap_id(Object.get_ap_id(followed)),
+ {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(Object.get_ap_id(follower)),
{:ok, activity} <- ActivityPub.follow(follower, followed, id, false) do
with deny_follow_blocked <- Pleroma.Config.get([:user, :deny_follow_blocked]),
{_, false} <- {:user_blocked, User.blocks?(followed, follower) && deny_follow_blocked},