🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

recaptchaed

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

recaptchaed

1.0.0
Rubygems
Version published
Maintainers
1
Created
Source

Recaptchaed

Rails Plugin for adding "recaptcha(recaptcha)":http://www.google.com/recaptcha to a form.

Install

First, go to "recaptcha(recaptcha)":http://www.google.com/recaptcha and sign up for a api key.

Next, install the recaptchaed gem:

@gem install recaptchaed@

Tell Rails to use the gem

Open config/environment.rb and enter the following:

@config.gem "recaptchaed"@

Run the generator to create config files and to add customizable error messages

@script/generate recaptchaed@

If it runs successfully, you should see the following:

@ create config/recaptchaed.yml create config/initializers/recaptchaed.rb added recaptcha i18n error message to config/locales/en.yml @

Edit the config/recaptcaed.yml file and add your personal recaptcha public and private api keys

Uninstall

Run script/destroy recaptchaed

Example Usage

This example shows how to protect a comment model with a recaptcha

Include the recaptcha javascript library in app/views/layouts/comments.html.erb.

@<%=javascript_include_tag 'http://www.google.com/recaptcha/api/js/recaptcha_ajax.js' %>@

Add the recaptcha markup to the app/views/comments/new.html.erb.

@

New comment

<% form_for(@comment) do |f| %> <%= f.error_messages %>

<%= f.label :title %>
<%= f.text_field :title %>

<%= f.label :body %>
<%= f.text_area :body %>

<%= recaptcha_tag (RECAPTCHAED["RECAPTCHA_PUBLIC_KEY"], "recaptcha_div", "blackglass") %>

<%= f.submit 'Create' %>

<% end %>

<%= link_to 'Back', comments_path %> @

The "recaptcha site(recaptcha)":http://code.google.com/apis/recaptcha/docs/customization.html has several options for different themes/styles. For example, you can change the theme of the recaptcha to 'white' by passing a different theme string.

@ <%= recaptcha_tag (RECAPTCHAED["RECAPTCHA_PUBLIC_KEY"], "recaptcha_div", "white") %> @

Add logic to create action inside the comments controller to validate the captcha.

First, include the library in the comments controller:

@ class CommentsController < ApplicationController include Recaptchaed ...rest of controller... end @

Then, protect the create method using the 'validate_captcha(..)' method

@

POST /comments

POST /comments.xml

def create @comment = Comment.new(params[:comment])

@recaptcha = validate_captcha(RECAPTCHAED["RECAPTCHA_PRIVATE_KEY"], request.remote_ip, params['recaptcha_challenge_field'], params['recaptcha_response_field'])

respond_to do |format|
  if @recaptcha && @recaptcha['success'] && @comment.save	
    flash[:notice] = 'Comment was successfully created.'
    format.html { redirect_to(@comment) }
    format.xml  { render :xml => @comment, :status => :created, :location => @comment }
  else
    if(!@recaptcha['success'])
      @comment.errors.add('recaptcha_response_field', :"recaptcha.invalid")
    end
    format.html { render :action => "new" }
    format.xml  { render :xml => @comment.errors, :status => :unprocessable_entity }
  end
end

end @

When a user fails to enter the correct captcha, the error message that is displayed is defined inside 'config/locales/en.yml'. Feel free to update that to whatever you like. And, it can also be internationalized, if needed.

Enjoy!

http://upgradingdave.com Copyright (c) 2010 Dave Paroulek, released under the MIT license

FAQs

Package last updated on 06 Nov 2010

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts