- user = Utils.get_ap_id(conn.params["actor"])
- Logger.debug("Checking sig for #{user}")
- [signature | _] = get_req_header(conn, "signature")
-
- cond do
- signature && String.contains?(signature, user) ->
- # set (request-target) header to the appropriate value
- # we also replace the digest header with the one we computed
- conn =
- conn
- |> put_req_header(
- "(request-target)",
- String.downcase("#{conn.method}") <> " #{conn.request_path}"
- )
-
- conn =
- if conn.assigns[:digest] do
- conn
- |> put_req_header("digest", conn.assigns[:digest])
- else
- conn
- end
-
- assign(conn, :valid_signature, HTTPSignatures.validate_conn(conn))
-
- signature ->
- Logger.debug("Signature not from actor")
- assign(conn, :valid_signature, false)
-
- true ->
- Logger.debug("No signature header!")
+ if get_format(conn) == "activity+json" do
+ conn
+ |> maybe_assign_valid_signature()
+ |> maybe_require_signature()
+ else
+ conn
+ end
+ end
+
+ defp maybe_assign_valid_signature(conn) do
+ if has_signature_header?(conn) do
+ # set (request-target) header to the appropriate value
+ # we also replace the digest header with the one we computed
+ request_target = String.downcase("#{conn.method}") <> " #{conn.request_path}"
+
+ conn =