ExTurnstile

Hex.pmDocs

Cloudflare Turnstile server-side token verification for Elixir.

Built by Shiko — tech@shiko.vet

Installation

{:ex_turnstile, "~> 0.1"}

Configuration

config :ex_turnstile, secret_key: System.get_env("TURNSTILE_SECRET_KEY")

Usage

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")

Phoenix Example

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
end

Links

License

MIT