Code Monkey home page Code Monkey logo

humanizer's Introduction

Humanizer

Humanizer is a very simple CAPTCHA method. It has a localized YAML file with questions and answers which is used to validate that the user is an actual human. Any model that includes ActiveModel::Validations should work. Our aim is to be database and mapper agnostic, so if it doesn't work for you, open an issue. Humanizer works with Rails 3 and 4.

Installation

Add humanizer to your Gemfile:

gem 'humanizer'

Bundle and run the generator in terminal:

bundle
rails g humanizer

Advanced Installation

  • Install all locales: rails g humanizer --all-locales
  • Show available locales: rails g humanizer --show-locales
  • Install selected locales: rails g humanizer en fi de

Usage

  1. In your model, include Humanizer and add the #require_human_on method, example:
class User < ActiveRecord::Base
  include Humanizer
  require_human_on :create
end
  1. Ask the question in the form, example:
<%= f.label :humanizer_answer, @model.humanizer_question %>
<%= f.text_field :humanizer_answer %>
<%= f.hidden_field :humanizer_question_id %>
  1. If you are using attr_accessible, remember to whitelist :humanizer_answer and :humanizer_question_id.

  2. If you are using strong_parameters, remember to permit :humanizer_answer and :humanizer_question_id.

Configuration

Default translations can be found in config/locales/

You might want to add/change question and answer pairs. This can be easily done by adding/modifying entries in locales file.

Skipping validation

You might want to skip the humanizer validations on your tests or rails console.

You can just have a simple attribute on your model and use it to bypass the validation. Here's an example:

attr_accessor :bypass_humanizer
require_human_on :create, :unless => :bypass_humanizer

Now when bypass_humanizer is true, validation will be skipped.

Reloading questions

In case you want to give your users the option to change the question, there's a #change_humanizer_question method to help you.

To make sure the current question doesn't get asked again, you can pass the current question id to the method. For example:

@user.change_humanizer_question(params[:user][:humanizer_question_id])

Live sites

License

Humanizer is licensed under the MIT License, for more details see the LICENSE file.

Question/Answer Translations

Contributors

CI Build Status

Build Status

humanizer's People

Contributors

vesan avatar jcxplorer avatar matiaskorhonen avatar akonan avatar krim avatar kennyadsl avatar serheo avatar gerard76 avatar ronan-mch avatar dlackty avatar yairgo avatar britto avatar woto avatar vanderhoorn avatar query-string avatar goodniceweb avatar ypadlyak avatar seogrady avatar unrared avatar nkokkos avatar rivalitaet avatar jlecour avatar xuanxu avatar joren avatar gaurav2728 avatar arunagw avatar deneuxa avatar radanisk avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.