Сьогодні дізнався: я створив rubygem, який реалізує Cloudflare Turnstile для Ruby on Rails.

Протягом останніх кількох тижнів я боролся з фальшивими реєстраціями на деяких з моїх особистих проектів на Ruby on Rails.

В одному випадку це призвело до того, що AWS SES надіслав 3000 листів для реєстрації. Тому рішення було необхідне.

На щастя, у Cloudflare є чудова капча-сервіс під назвою Turnstile, який ви, можливо, вже бачили за їхньою помаранчевою коробкою.

Оскільки мені довелося реалізувати його в різних проектах, я вирішив створити RubyGem під назвою turnstiled.

Він також реалізує мок-сценарій JavaScript-виджету для використання в тестуванні або розробці.

Використання дуже просте.

Додайте його у свій Gemfile і виконайте команду bundle install.

gem 'turnstiled'

Створіть config/initializers/turnstiled.rb і налаштуйте його зі своїм сайтом ключем і секретом.

Rails.application.config.to_prepare do  
 Turnstiled.site_key = ''  
 Turnstiled.site_secret = ''  
end

Включіть JavaScript у свій макет за допомогою:

<%= turnstile_javascript_tag %>

Рендеріть віджет у своїх формах:

<%= form_with model: @some_model do %>  
 <%= turnstile_tag %>  
<% end %>

Тепер переконайтеся, що ваш контролер перевіряє запит за допомогою:

class SomeController < ApplicationController  
 verify_turnstile_request only: %i[create]  
end




Перекладено з: [TIL: I made a rubygem implementing Cloudflare Turnstile for Rubo on Rails](https://henrikbjorn.medium.com/til-i-made-a-rubygem-implementing-cloudflare-turnstile-for-rubo-on-rails-5d21762f94f6)