Cloudflare Turnstile server-side token verification for Elixir.
Built by Shiko — tech@shiko.vet
{:ex_turnstile, "~> 0.1"}config :ex_turnstile, secret_key: System.get_env("TURNSTILE_SECRET_KEY")case ExTurnstile.verify(token) do
:ok -> # Valid, proceed
{:error, reason} -> # Invalid token
end
# With client IP (recommended)
ExTurnstile.verify(token, remote_ip: "1.2.3.4")
def create(conn, %{"turnstile_token" => token} = params) do
ip = to_string(:inet.ntoa(conn.remote_ip))
case ExTurnstile.verify(token, remote_ip: ip) do
:ok -> do_create(conn, params)
{:error, reason} -> conn |> put_status(403) |> json(%{error: reason})
end
endMIT