RailsCloudflareTurnstile
This is a Rails plugin adding support for Cloudflare Turnstile. It works with Rails 6+, and Ruby 3.x.
Usage
Installation
Add this line to your application's Gemfile:
gem 'rails_cloudflare_turnstile'And then execute:
$ bundleOr install it yourself as:
$ gem install rails_cloudflare_turnstileNext, configure it by creating a config/initializers/cloudflare_turnstile.rb with contents like the following:
RailsCloudflareTurnstile.configure do |c|
c.site_key = "XXXXXX"
c.secret_key = "XXXXXXXX"
c.fail_open = true
endTo totally disable Turnstile, you can set c.enabled = false and all other config values are ignored.
To use Turnstile for a view:
- Call
cloudflare_turnstile_script_tagin your layout - Call
cloudflare_turnstilein your form View. Keyword arguments are passed to the tag helper (for example, to set thetabindexoption, you could usecloudflare_turnstile(data: {tabindex: 0})) - Call
validate_cloudflare_turnstileas abefore_actionin your controller.
If the challenge fails, the exception RailsCloudflareTurnstile::Forbidden will be raised; you should handle this with
a rescue_from block.
By default, in development and test mode, a special mock view will be inserted if real credentials are not present. To
disable this, set the mock_enabled property of the configuration to false.
License
The gem is available as open source under the terms of the ISC License.