Sha256: 51246f2dbdf5a3fa31146d2a071f0502dd720a6e22488967fc0d1f04d5909e0c

Contents?: true

Size: 1.14 KB

Versions: 48

Compression:

Stored size: 1.14 KB

Contents

module Incline
  ##
  # Validates a reCAPTCHA attribute.
  class RecaptchaValidator < ActiveModel::EachValidator

    ##
    # Validates a reCAPTCHA attribute.
    #
    # The value of the attribute should be a hash with two keys: :response, :remote_ip
    def validate_each(record, attribute, value)
      # Do NOT raise an error if nil.
      return if value.blank?

      # Make sure the response only gets processed once.
      return if value == :verified

      # Automatically skip validation if paused.
      return if Incline::Recaptcha::paused?

      # If the user form includes the recaptcha field, then something will come in
      # and then we want to check it.
      remote_ip, _, response = value.partition('|')
      if remote_ip.blank? || response.blank?
        record.errors[:base] << (options[:message] || 'Requires reCAPTCHA challenge to be completed')
      else
        if Incline::Recaptcha::verify(response: response, remote_ip: remote_ip)
          record.send "#{attribute}=", :verified
        else
          record.errors[:base] << (options[:message] || 'Invalid response from reCAPTCHA challenge')
        end
      end

    end

  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
incline-0.3.14 lib/incline/validators/recaptcha_validator.rb
incline-0.3.13 lib/incline/validators/recaptcha_validator.rb
incline-0.3.12 lib/incline/validators/recaptcha_validator.rb
incline-0.3.11 lib/incline/validators/recaptcha_validator.rb
incline-0.3.10 lib/incline/validators/recaptcha_validator.rb
incline-0.3.9 lib/incline/validators/recaptcha_validator.rb
incline-0.3.8 lib/incline/validators/recaptcha_validator.rb
incline-0.3.7 lib/incline/validators/recaptcha_validator.rb
incline-0.3.6 lib/incline/validators/recaptcha_validator.rb
incline-0.3.5 lib/incline/validators/recaptcha_validator.rb
incline-0.3.4 lib/incline/validators/recaptcha_validator.rb
incline-0.3.3 lib/incline/validators/recaptcha_validator.rb
incline-0.3.2 lib/incline/validators/recaptcha_validator.rb
incline-0.3.1 lib/incline/validators/recaptcha_validator.rb
incline-0.3.0 lib/incline/validators/recaptcha_validator.rb
incline-0.2.36 lib/incline/validators/recaptcha_validator.rb
incline-0.2.35 lib/incline/validators/recaptcha_validator.rb
incline-0.2.34 lib/incline/validators/recaptcha_validator.rb
incline-0.2.28 lib/incline/validators/recaptcha_validator.rb
incline-0.2.27 lib/incline/validators/recaptcha_validator.rb