b1e0d91a73c1322470a7c18db8ee2dce1c73ae01
[akkoma] / lib / pleroma / plugs / http_signature.ex
1 defmodule Pleroma.Web.Plugs.HTTPSignaturePlug do
2 alias Pleroma.Web.HTTPSignatures
3 import Plug.Conn
4
5 def init(options) do
6 options
7 end
8
9 def call(%{assigns: %{valid_signature: true}} = conn, opts) do
10 conn
11 end
12
13 def call(conn, opts) do
14 if get_req_header(conn, "signature") do
15 conn = conn
16 |> put_req_header("(request-target)", String.downcase("#{conn.method} #{conn.request_path}"))
17
18 assign(conn, :valid_signature, HTTPSignatures.validate_conn(conn))
19 else
20 conn
21 end
22 end
23 end