More signature debugging.
[akkoma] / lib / pleroma / plugs / http_signature.ex
1 defmodule Pleroma.Web.Plugs.HTTPSignaturePlug do
2 alias Pleroma.Web.HTTPSignatures
3 import Plug.Conn
4 require Logger
5
6 def init(options) do
7 options
8 end
9
10 def call(%{assigns: %{valid_signature: true}} = conn, opts) do
11 conn
12 end
13
14 def call(conn, opts) do
15 user = conn.params["actor"]
16 Logger.debug("Checking sig for #{user}")
17
18 if get_req_header(conn, "signature") do
19 conn =
20 conn
21 |> put_req_header(
22 "(request-target)",
23 String.downcase("#{conn.method}") <> " #{conn.request_path}"
24 )
25
26 assign(conn, :valid_signature, HTTPSignatures.validate_conn(conn))
27 else
28 Logger.debug("No signature header!")
29 conn
30 end
31 end
32 end