Skip to content

A fork of SimpleCaptcha for Rails 3 using the session store rather than the database.

License

Notifications You must be signed in to change notification settings

vexsoftware/simple_captcha

 
 

Repository files navigation

SimpleCaptcha

This is Vex Software's fork of SimpleCaptcha that uses the session store rather than the database based on SimpleCaptcha.

Requirements

In order to use SimpleCaptcha, the following is needed:

Installation

gem 'simple_captcha', :git => 'git://github.com/vexsoftware/simple_captcha.git'

Usage

Controller/View Based

In the view file within the form tags add this code:

<%= show_simple_captcha %>

And in the controller's action, validate it with:

if simple_captcha_valid?
  # Code for valid answers.
else
  # Code for invalid answers.
end

Model Based

In the view file within the form tags write this code:

<%= show_simple_captcha(:object => "user") %>

And in the model add:

simple_captcha

FormBuilder Helper

In addition to the previous example, SimpleCaptcha can also be used along with FormBuilder.

<%= form_for @user do |f| %>
  ...
  <%= f.simple_captcha :label => "Enter numbers..." %>
  ...
<% end %>

Validating with CAPTCHA

Using valid_with_captcha? will validate the model instance along with the CAPTCHA response.
The original valid? method is not overridden.

@user.valid_with_captcha?

Saving with CAPTCHA

Using save_with_captcha will save the model instance along with validating the CAPTCHA response.
The original save method is not overridden.

@user.save_with_captcha

Formtastic Integration

SimpleCaptcha detects if you are using Formtastic and appends SimpleCaptcha::CustomFormBuilder.

<%= form.input :captcha, :as => :simple_captcha %>

Options

View

These options can be passed to the view helper.

  • :label - provides the custom text b/w the image and the text field, the default is "type the code from the image"
  • :object - the name of the object of the model class, to implement the model based captcha.
  • :code_type - return numeric only if set to 'numeric'

Global

These options can be configured using an initializer.

  • image_style - provides the specific image style for the captcha image.
    There are eight different styles available with this gem:

    • simply_blue
    • simply_red
    • simply_green
    • charcoal_grey
    • embosed_silver
    • all_black
    • distorted_black
    • almost_invisible

The default style is simply_blue.
You can also specify random to select the random image style.

  • distortion - handles the complexity of the image. Distortion can be set to low, medium or high. The default is low.

An example initializer file:

SimpleCaptcha.setup do |sc|
  # default: 100x28
  sc.image_size = '120x40'

  # default: 5
  sc.length = 6

  # default: simply_blue
  # possible values:
  # 'embosed_silver',
  # 'simply_red',
  # 'simply_green',
  # 'simply_blue',
  # 'distorted_black',
  # 'all_black',
  # 'charcoal_grey',
  # 'almost_invisible'
  # 'random'
  sc.image_style = 'simply_green'

  # default: low
  # possible values: 'low', 'medium', 'high', 'random'
  sc.distortion = 'medium'
end

You can add your own style:

SimpleCaptcha.setup do |sc|
  sc.image_style = 'mycaptcha'
  sc.add_image_style('mycaptcha', [
      "-background '#F4F7F8'",
      "-fill '#86818B'",
      "-border 1",
      "-bordercolor '#E0E2E3'"
  ])
end

You can provide the path where ImageMagick is installed as well:

SimpleCaptcha.setup do |sc|
  sc.image_magick_path = '/usr/bin' # Find the path by running: which convert
end

You can provide the path where temp files should be stored. It's useful when you are not able to use the default temp directory.

SimpleCaptcha.setup do |sc|
  sc.tmp_path = Rails.root.join('tmp/simple_captcha').to_s
end

Styling

To style SimpleCaptcha, use .captcha in your application's stylesheet. For further customization, you can generate the partial into your application by using:

rails g simplecaptcha:partial

The partial will be generated to app/views/simple_captcha/_captcha.erb.

I18n

SimpleCaptcha supports I18n. It has the ability to use a different error message for different models.

simple_captcha:
  message:
    default: "The answer to the CAPTCHA was incorrect."
    user: "Sorry, but your answer to the CAPTCHA wasn't correct."

Credits

This is a fork of the Rails 3 version of SimpleCaptcha by Vex Software.
The original plugin is located at http://expressica.com/simple_captcha which was created by Sur

License

The original plugin is released under the MIT license by Sur.

About

A fork of SimpleCaptcha for Rails 3 using the session store rather than the database.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%