analytics/lib/plausible_web/captcha.ex
Uku Taht 9feda6a3d3
Add HCaptcha support (#304)
* Add HCaptcha support

* Actually verify password reset requests

* Fix password request when captcha not configured

* Add configuration for prod release
2020-08-28 15:00:16 +03:00

28 lines
587 B
Elixir

defmodule PlausibleWeb.Captcha do
@verify_endpoint "https://hcaptcha.com/siteverify"
def enabled? do
!!sitekey()
end
def sitekey() do
Application.get_env(:plausible, :hcaptcha, [])
|> Keyword.fetch!(:sitekey)
end
def verify(token) do
if enabled?() do
res = HTTPoison.post!(@verify_endpoint, {:form, [{"response", token}, {"secret", secret()}]})
json = Jason.decode!(res.body)
json["success"]
else
true
end
end
defp secret() do
Application.get_env(:plausible, :hcaptcha, [])
|> Keyword.fetch!(:secret)
end
end