From 68752b20475162705837421e446166892421cf21 Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 18 Feb 2018 12:04:59 +0100 Subject: [PATCH] Switch protocols to AP when post come in through AP. --- lib/pleroma/user.ex | 2 +- .../web/activity_pub/activity_pub_controller.ex | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index ab29fe6f4..2ca4d406b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -427,5 +427,5 @@ defmodule Pleroma.User do Repo.insert(cs, on_conflict: :replace_all, conflict_target: :nickname) end - def ap_enabled?(%User{info: %{"ap_enabled" => ap}}), do: ap + def ap_enabled?(%User{info: info}), do: info["ap_enabled"] end diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index a4472a832..8080a2b1e 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -23,13 +23,23 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do # TODO: Ensure that this inbox is a recipient of the message def inbox(%{assigns: %{valid_signature: true}} = conn, params) do # File.write("/tmp/incoming.json", Poison.encode!(params)) - with {:ok, activity} <- Transmogrifier.handle_incoming(params) do + with {:ok, _user} <- ap_enabled_actor(params["actor"]), + {:ok, activity} <- Transmogrifier.handle_incoming(params) do json(conn, "ok") else e -> IO.inspect(e) end end + def ap_enabled_actor(id) do + user = User.get_by_ap_id(id) + if User.ap_enabled?(user) do + {:ok, user} + else + ActivityPub.make_user_from_ap_id(id) + end + end + def errors(conn, _e) do conn |> put_status(500)