summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex2
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub_controller.ex12
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)