SimpleCaptcha3 icon indicating copy to clipboard operation
SimpleCaptcha3 copied to clipboard

A simplest and robust captcha plugin for Rails3 applications. This is an upgraded version of SimpleCaptcha(http://expressica.com/simple_captcha/)

Copyright (c) 2008 [Sur http://expressica.com]

SimpleCaptcha3

Version: edge(Only for Rails 3.*) Author: Sur [http://expressica.com] Plugin URL: http://github.com/bansalakhil/SimpleCaptcha3 Contributors: http://vinsol.com/team, Kei Kusakari [http://d.hatena.ne.jp/kusakari/about] License: MIT

Introduction:

SimpleCaptcha3 is the simplest and a robust captcha plugin for Rails3 applications. Its implementation requires adding up a single line in views and in controllers/models.

SimpleCaptcha(older version of SimpleCaptcha3) is also available to be used with Rails2.0 or above and also it provides the backward compatibility with previous versions of Rails. (http://expressica.com/simple_captcha)

Features:

-> Zero FileSystem usage(secret code moved to db-store and image storage removed). -> Provides various image styles. -> Provides three level of complexity of images. -> Works absolutely fine in distributed environment(session and db based implementation works fine in distributed environment). -> Implementation is as easy as just writing a single line in your view. "<%= show_simple_captcha %>" within the 'form' tags. -> Flexible DOM and CSS handling(There is a separate view partial for rednering SimpleCaptcha3 DOM elements). -> Automated removal of 1 hour old unmatched simple_captcha data.

Pre-Requisite

RMagick should be installed on your machine to use this plugin. visit http://rmagick.rubyforge.org for more details.

Installation

SimpleCaptcha3 plugin can be installed by running this command from the application root

rails plugin install git://github.com/bansalakhil/SimpleCaptcha3.git

Setup

After installation, follow these simple steps to setup the plugin.

STEP 1

>> rake simple_captcha:setup

STEP 2

>> rake db:migrate

STEP 3

add the following code in the file config/routes.rb

match '/simple_captcha(/:action)' => 'simple_captcha', :as => :simple_captcha

This is a mandatory route used for rendering the simple_captcha image on the fly without 
storing on the filesyste.

STEP 4

add the following line in the file app/controllers/application.rb

ApplicationController < ActionController::Base
  include SimpleCaptcha::ControllerHelpers
end

Usage

Controller Based

In the view file within the form tags add this code

<%= show_simple_captcha %>

and in the controller's action authenticate it as 

  if simple_captcha_valid?
    do this
  else
    do that
  end

Model Based

In the view file within the form tags write this code

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

and in the model class add this code

class User < ActiveRecord::Basse
  apply_simple_captcha
end

Validating with captcha
---------------------------------------------------------------------------------------
  @user.valid_with_captcha?
  NOTE: @user.valid? will still work as it should, it will not validate the captcha code.

Saving with captcha
---------------------------------------------------------------------------------------
  @user.save_with_captcha
  NOTE: @user.save will still work as it should, it will not validate the captcha code.

Options & Examples

View Options

:label
---------------------------------------------------------------------------------------
  provides the custom text b/w the image and the text field,
  the default is "type the code from the image"

:image_style
---------------------------------------------------------------------------------------
  Provides the specific image style for the captcha image.
  There are eight different styles available with the plugin as...
  1) simply_blue
  2) simply_red
  3) simply_green
  4) charcoal_grey
  5) embosed_silver
  6) all_black
  7) distorted_black
  8) almost_invisible
  
  Default style is 'simply_blue'.
  You can also specify 'random' to select the random image style.

  
:distortion
---------------------------------------------------------------------------------------
  Handles the complexity of the image. The :distortion can be set to 'low', 'medium'
  or 'high'. Default is 'low'.

:object
---------------------------------------------------------------------------------------
  the name of the object of the model class, to implement the model based captcha.

  
How to change the CSS for SimpleCaptcha DOM elements ?
-----------------------------------------------------
You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.
For Rails >= 2.0 the file wiil reside as...
"/app/views/simple_captcha/_simple_captcha.erb"
For Rails < 2.0 the file will reside as...
"/app/views/simple_captcha/_simple_captcha.rhtml"

View's Examples

Controller Based Example
---------------------------------------------------------------------------------------
  example
  -------
  <%= show_simple_captcha(:label => "human authentication") %>
  
  example
  -------
  <%= show_simple_captcha(:label => "human authentication", :image_style => 'embosed_silver') %>

  example
  -------
  <%= show_simple_captcha(:label => "human authentication", :image_style => 'simply_red', :distortion => 'medium') %>

Model Based Example
---------------------------------------------------------------------------------------
  
  example
  -------
  <%= show_simple_captcha(:object => 'user', :label => "human authentication") %>

Model Options

:message
---------------------------------------------------------------------------------------
  provides the custom message on failure of captcha authentication
  the default is "Secret Code did not match with the Image"

:add_to_base
---------------------------------------------------------------------------------------
  if set to true, appends the error message to the base.

Model's Example
=========================================================================================
  
  example
  -------
  class User < ActiveRecord::Base
    apply_simple_captcha
  end

  example
  -------
  class User < ActiveRecord::Base
    apply_simple_captcha :message => "The secret Image and code were different", :add_to_base => true
  end

===========================================================================================

Enjoy the simplest captcha implementation. Author: Sur Blog: http://expressica.com Contact: [email protected] Plugin Homepage: http://expressica.com/simple_captcha

Any feedback/comment/issue/donation is welcome!

===========================================================================================