diff options
author | William Pitcock <nenolod@dereferenced.org> | 2019-05-22 04:33:10 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-05-22 18:53:12 +0000 |
commit | 60f882b09f5f837546d59f8eef56b905e065ec60 (patch) | |
tree | 6bff28e61d10cbf74934206b651e4b5b4a945f44 | |
parent | 75b6c4b00433560fb5ee502f13e8261b4b8a246a (diff) | |
download | pleroma-60f882b09f5f837546d59f8eef56b905e065ec60.tar.gz pleroma-60f882b09f5f837546d59f8eef56b905e065ec60.zip |
activitypub: run user objects through MRF filters
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 3d9679ec0..aa0229db7 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -909,7 +909,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end end - def user_data_from_user_object(data) do + defp object_to_user_data(data) do avatar = data["icon"]["url"] && %{ @@ -956,9 +956,19 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do {:ok, user_data} end + def user_data_from_user_object(data) do + with {:ok, data} <- MRF.filter(data), + {:ok, data} <- object_to_user_data(data) do + {:ok, data} + else + e -> {:error, e} + end + end + def fetch_and_prepare_user_from_ap_id(ap_id) do - with {:ok, data} <- Fetcher.fetch_and_contain_remote_object_from_id(ap_id) do - user_data_from_user_object(data) + with {:ok, data} <- Fetcher.fetch_and_contain_remote_object_from_id(ap_id), + {:ok, data} <- user_data_from_user_object(data) do + {:ok, data} else e -> Logger.error("Could not decode user at fetch #{ap_id}, #{inspect(e)}") end |