--- /dev/null
+defmodule Pleroma.Web.Plugs.CSPNoncePlug do
+ import Plug.Conn
+
+ def init(opts) do
+ opts
+ end
+
+ def call(conn, _opts) do
+ assign_csp_nonce(conn)
+ end
+
+ defp assign_csp_nonce(conn) do
+ nonce =
+ :crypto.strong_rand_bytes(128)
+ |> Base.url_encode64()
+ |> binary_part(0, 15)
+
+ conn
+ |> assign(:csp_nonce, nonce)
+ end
+end