diff options
| -rw-r--r-- | lib/pleroma/plugs/http_signature.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 9 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 13 | ||||
| -rw-r--r-- | lib/pleroma/web/http_signatures/http_signatures.ex | 4 | 
4 files changed, 9 insertions, 19 deletions
| diff --git a/lib/pleroma/plugs/http_signature.ex b/lib/pleroma/plugs/http_signature.ex index 2d0e10cad..38bcd3a78 100644 --- a/lib/pleroma/plugs/http_signature.ex +++ b/lib/pleroma/plugs/http_signature.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Web.Plugs.HTTPSignaturePlug do    end    def call(conn, _opts) do -    user = Utils.normalize_actor(conn.params["actor"]) +    user = Utils.get_ap_id(conn.params["actor"])      Logger.debug("Checking sig for #{user}")      [signature | _] = get_req_header(conn, "signature") diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index ff83dfd36..690ca62ec 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -263,11 +263,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    def handle_incoming(          %{"type" => "Delete", "object" => object_id, "actor" => actor, "id" => _id} = _data        ) do -    object_id = -      case object_id do -        %{"id" => id} -> id -        id -> id -      end +    object_id = Utils.get_ap_id(object_id)      with %User{} = _actor <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <- @@ -365,9 +361,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      end    end -  # TODO -  # Accept -    def handle_incoming(_), do: :error    def get_obj_helper(id) do diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 831e13b7e..7362a3ccf 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -7,18 +7,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do    # Some implementations send the actor URI as the actor field, others send the entire actor object,    # so figure out what the actor's URI is based on what we have. -  def normalize_actor(actor) do -    cond do -      is_binary(actor) -> -        actor - -      is_map(actor) -> -        actor["id"] +  def get_ap_id(object) do +    case object do +      %{"id" => id} -> id +      id -> id      end    end    def normalize_params(params) do -    Map.put(params, "actor", normalize_actor(params["actor"])) +    Map.put(params, "actor", get_ap_id(params["actor"]))    end    def make_json_ld_header do diff --git a/lib/pleroma/web/http_signatures/http_signatures.ex b/lib/pleroma/web/http_signatures/http_signatures.ex index 4e0adbc1d..5e42a871b 100644 --- a/lib/pleroma/web/http_signatures/http_signatures.ex +++ b/lib/pleroma/web/http_signatures/http_signatures.ex @@ -32,14 +32,14 @@ defmodule Pleroma.Web.HTTPSignatures do    def validate_conn(conn) do      # TODO: How to get the right key and see if it is actually valid for that request.      # For now, fetch the key for the actor. -    with actor_id <- Utils.normalize_actor(conn.params["actor"]), +    with actor_id <- Utils.get_ap_id(conn.params["actor"]),           {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do        if validate_conn(conn, public_key) do          true        else          Logger.debug("Could not validate, re-fetching user and trying one more time")          # Fetch user anew and try one more time -        with actor_id <- Utils.normalize_actor(conn.params["actor"]), +        with actor_id <- Utils.get_ap_id(conn.params["actor"]),               {:ok, _user} <- ActivityPub.make_user_from_ap_id(actor_id),               {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do            validate_conn(conn, public_key) | 
