Module: Cloudflare::Turnstile::Rails::ControllerMethods

Defined in:
lib/cloudflare/turnstile/rails/controller_methods.rb

Instance Method Summary collapse

Instance Method Details

#valid_turnstile?(model: nil, flash: :keep, **opts) ⇒ Boolean Also known as: turnstile_valid?

flash: :keep carries the automatic failure message into the next request, for a redirect. flash: :now scopes it to the response being rendered. The keyword shadows the controller's own flash method, hence request.flash.

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
33
# File 'lib/cloudflare/turnstile/rails/controller_methods.rb', line 23

def valid_turnstile?(model: nil, flash: :keep, **opts)
  response = verify_turnstile(model: model, **opts)
  success = response.is_a?(VerificationResponse) && response.success?

  if !success && model.nil?
    store = flash == :now ? request.flash.now : request.flash
    store[:alert] = ErrorMessage.default
  end

  success
end

#verify_turnstile(model: nil, **opts) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/cloudflare/turnstile/rails/controller_methods.rb', line 8

def verify_turnstile(model: nil, **opts)
  response ||= params[Cloudflare::RESPONSE_FIELD_NAME]
  result = Rails::Verification.verify(response: response, **opts)

  unless result.success?
    message = ErrorMessage.default
    model&.errors&.add(:base, message)
  end

  result
end