Протягом останніх кількох тижнів я боролся з фальшивими реєстраціями на деяких з моїх особистих проектів на 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)