baseless/lib/pleroma/web/plugs/metrics_predicate.ex
2025-01-24 09:36:38 -08:00

30 lines
624 B
Elixir

defmodule Pleroma.Web.Plugs.MetricsPredicate do
@moduledoc """
This Unplug predicate is used to authorize requests to the PromEx metrics
"""
@behaviour Unplug.Predicate
@impl true
def call(conn, _) do
conn
|> Plug.Conn.get_req_header("authorization")
|> case do
["Bearer " <> token] ->
token == get_configured_auth_token()
[] ->
get_configured_auth_token() == :disabled
_ ->
false
end
end
defp get_configured_auth_token do
:pleroma
|> Application.get_env(__MODULE__, auth_token: "super_secret")
|> Keyword.get(:auth_token)
end
end