Fix signing bug.
[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 if get_req_header(conn, "signature") do
18 conn = conn
19 |> put_req_header("(request-target)", String.downcase("#{conn.method}") <> " #{conn.request_path}")
20
21 assign(conn, :valid_signature, HTTPSignatures.validate_conn(conn))
22 else
23 Logger.debug("No signature header!")
24 conn
25 end
26 end
27 end