File size: 810 Bytes
8da2481 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | defmodule PlausibleWeb.Captcha do
alias Plausible.HTTPClient
@verify_endpoint "https://hcaptcha.com/siteverify"
def enabled? do
is_binary(sitekey())
end
def sitekey() do
Application.get_env(:plausible, :hcaptcha, [])[:sitekey]
end
def verify(token) do
if enabled?() do
res =
HTTPClient.impl().post(
@verify_endpoint,
[{"content-type", "application/x-www-form-urlencoded"}],
%{
response: token,
secret: secret()
}
)
case res do
{:ok, %Finch.Response{status: 200, body: %{"success" => success}}} ->
success
_ ->
false
end
else
true
end
end
defp secret() do
Application.get_env(:plausible, :hcaptcha, [])[:secret]
end
end
|