glebtv-simple_captcha 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,9 @@
1
1
  =SimpleCaptcha
2
2
 
3
- SimpleCaptcha is the simplest and a robust captcha plugin. Its implementation requires
3
+ This is a fork of wolcanus's fork of SimpleCaptcha to support Mongoid 3 and new formtastic.
4
+
5
+ This is a fork of galetahub SimpleCaptcha to support Mongoid.
6
+ Its implementation requires
4
7
  adding up a single line in views and in controllers/models.
5
8
  SimpleCaptcha is available to be used with Rails 3 or above and also it provides the
6
9
  backward compatibility with previous versions of Rails.
@@ -17,15 +20,18 @@ backward compatibility with previous versions of Rails.
17
20
 
18
21
  ==Requirements
19
22
 
20
- * {Ruby}[http://ruby-lang.org/] >= 1.9
23
+ * {Ruby}[http://ruby-lang.org/] >= 1.8.7
21
24
  * {Rails}[http://github.com/rails/rails] >= 3
22
25
  * ImageMagick should be installed on your machine to use this plugin.
23
26
  visit http://www.imagemagick.org/script/index.php for more details.
24
- * AR or mongoid
25
27
 
26
28
  ==Installation
27
29
 
28
- gem "glebtv-simple_captcha", "~> 0.2.0", require: "simple_captcha"
30
+ gem "glebtv-simple_captcha", :require => "simple_captcha"
31
+
32
+ or
33
+
34
+ gem 'glebtv-simple_captcha', :require => 'simple_captcha', :git => 'git://github.com/glebtv/simple-captcha.git'
29
35
 
30
36
  ==Setup
31
37
 
@@ -34,8 +40,6 @@ on the version of rails your application is using.
34
40
 
35
41
  rails generate simple_captcha
36
42
 
37
- rake db:migrate
38
-
39
43
  ==Usage
40
44
 
41
45
  ===Controller Based
@@ -163,13 +167,6 @@ You can provide the path where image_magick is installed as well:
163
167
  sc.image_magick_path = '/usr/bin' # you can check this from console by running: which convert
164
168
  end
165
169
 
166
- You can provide the path where should be stored tmp files.
167
- It's usefull when you dont have acces to /tmp (default directory)
168
-
169
- SimpleCaptcha.setup do |sc|
170
- sc.tmp_path = '/tmp' # or somewhere in project eg. Rails.root.join('tmp/simple_captcha').to_s, make shure directory exists
171
- end
172
-
173
170
 
174
171
  ===How to change the CSS for SimpleCaptcha DOM elements?
175
172
  You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.
@@ -209,7 +206,7 @@ You can change the CSS of the SimpleCaptcha DOM elements as per your need in thi
209
206
  default: "Secret Code did not match with the Image"
210
207
  user: "The secret Image and code were different"
211
208
 
212
- ==Who's who?
209
+ ==The Original Author
213
210
 
214
211
  Enjoy the simplest captcha implementation.
215
212
 
@@ -223,4 +220,4 @@ Plugin Homepage: http://expressica.com/simple_captcha
223
220
 
224
221
  Plugin update for rails 3: http://github.com/galetahub
225
222
 
226
- Any feedback/comment/issue/donation is welcome!
223
+ Any feedback/comment/issue/donation is welcome!
data/Rakefile CHANGED
@@ -1,22 +1 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- desc 'Default: run unit tests.'
6
- task :default => :test
7
-
8
- desc 'Test the simple_captcha plugin.'
9
- Rake::TestTask.new(:test) do |t|
10
- t.libs << 'lib'
11
- t.pattern = 'test/**/*_test.rb'
12
- t.verbose = true
13
- end
14
-
15
- desc 'Generate documentation for the simple_captcha plugin.'
16
- Rake::RDocTask.new(:rdoc) do |rdoc|
17
- rdoc.rdoc_dir = 'rdoc'
18
- rdoc.title = 'SimpleCaptcha'
19
- rdoc.options << '--line-numbers' << '--inline-source'
20
- rdoc.rdoc_files.include('README')
21
- rdoc.rdoc_files.include('lib/**/*.rb')
22
- end
1
+ require "bundler/gem_tasks"
@@ -1,4 +1,4 @@
1
- SimplaCaptcha
1
+ SimpleCaptcha
2
2
  =============
3
3
  # Generate migration and copy view partial
4
4
  rails generate simple_captcha
@@ -6,16 +6,17 @@ class SimpleCaptchaGenerator < Rails::Generators::Base
6
6
  def self.source_root
7
7
  @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates/'))
8
8
  end
9
-
10
- def self.next_migration_number(dirname)
11
- Time.now.strftime("%Y%m%d%H%M%S")
12
- end
13
9
 
14
10
  def create_partial
15
11
  template "partial.erb", File.join('app/views', 'simple_captcha', "_simple_captcha.erb")
16
12
  end
17
-
18
- def create_migration
19
- migration_template "migration.rb", File.join('db/migrate', "create_simple_captcha_data.rb")
13
+
14
+ unless defined?(Mongoid)
15
+ def self.next_migration_number(dirname)
16
+ Time.now.strftime("%Y%m%d%H%M%S")
17
+ end
18
+ def create_migration
19
+ migration_template "migration.rb", File.join('db/migrate', "create_simple_captcha_data.rb")
20
+ end
20
21
  end
21
22
  end
@@ -1,15 +1,15 @@
1
- class CreateSimpleCaptchaData < ActiveRecord::Migration
2
- def self.up
3
- create_table :simple_captcha_data do |t|
4
- t.string :key, :limit => 40
5
- t.string :value, :limit => 6
6
- t.timestamps
7
- end
8
-
9
- add_index :simple_captcha_data, :key, :name => "idx_key"
10
- end
11
-
12
- def self.down
13
- drop_table :simple_captcha_data
14
- end
15
- end
1
+ class CreateSimpleCaptchaData < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :simple_captcha_data do |t|
4
+ t.string :key, :limit => 40
5
+ t.string :value, :limit => 6
6
+ t.timestamps
7
+ end
8
+
9
+ add_index :simple_captcha_data, :key, :name => "idx_key"
10
+ end
11
+
12
+ def self.down
13
+ drop_table :simple_captcha_data
14
+ end
15
+ end
@@ -7,17 +7,23 @@ module SimpleCaptcha
7
7
  autoload :ViewHelper, 'simple_captcha/view'
8
8
  autoload :ControllerHelpers, 'simple_captcha/controller'
9
9
 
10
- autoload :FormBuilder, 'simple_captcha/form_builder'
11
- autoload :CustomFormBuilder, 'simple_captcha/formtastic'
12
-
13
- if defined?(Mongoid)
14
- require 'simple_captcha/mongoid'
15
- autoload :ModelHelpers, 'simple_captcha/mongoid'
16
- autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data_mongoid'
10
+ autoload :FormBuilder, 'simple_captcha/hooks/form_builder'
11
+
12
+ if Object.const_defined?("Formtastic")
13
+ require "simple_captcha/hooks/formtastic"
14
+ end
15
+
16
+ if Object.const_defined?("SimpleForm")
17
+ require "simple_captcha/hooks/simple_form"
18
+ end
19
+
20
+ if Object.const_defined?("Mongoid")
21
+ autoload :SimpleCaptchaData, 'simple_captcha/storage/mongoid'
17
22
  else
23
+ autoload :SimpleCaptchaData, 'simple_captcha/storage/active_record'
18
24
  autoload :ModelHelpers, 'simple_captcha/active_record'
19
- autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data_ar'
20
25
  end
26
+
21
27
  autoload :Middleware, 'simple_captcha/middleware'
22
28
 
23
29
  mattr_accessor :image_size
@@ -26,8 +32,20 @@ module SimpleCaptcha
26
32
  mattr_accessor :length
27
33
  @@length = 5
28
34
 
35
+ # 'embosed_silver',
36
+ # 'simply_red',
37
+ # 'simply_green',
38
+ # 'simply_blue',
39
+ # 'distorted_black',
40
+ # 'all_black',
41
+ # 'charcoal_grey',
42
+ # 'almost_invisible'
43
+ # 'random'
44
+ mattr_accessor :image_style
45
+ @@image_style = 'simply_blue'
46
+
29
47
  mattr_accessor :image_color
30
- @@image_color = '#0089d1'
48
+ @@image_color = nil
31
49
 
32
50
  # 'low', 'medium', 'high', 'random'
33
51
  mattr_accessor :distortion
@@ -41,6 +59,13 @@ module SimpleCaptcha
41
59
  mattr_accessor :tmp_path
42
60
  @@tmp_path = nil
43
61
 
62
+ mattr_accessor :pointsize
63
+ @@pointsize = 30
64
+
65
+ def self.add_image_style(name, params = [])
66
+ SimpleCaptcha::ImageHelpers.image_styles.update(name.to_s => params)
67
+ end
68
+
44
69
  def self.setup
45
70
  yield self
46
71
  end
@@ -54,14 +54,12 @@ module SimpleCaptcha #:nodoc
54
54
  end
55
55
 
56
56
  def is_captcha_valid?
57
- return true if Rails.env.test?
58
-
59
57
  if captcha && captcha.upcase.delete(" ") == SimpleCaptcha::Utils::simple_captcha_value(captcha_key)
60
58
  SimpleCaptcha::Utils::simple_captcha_passed!(captcha_key)
61
59
  return true
62
60
  else
63
61
  message = simple_captcha_options[:message] || I18n.t(self.class.model_name.downcase, :scope => [:simple_captcha, :message], :default => :default)
64
- simple_captcha_options[:add_to_base] ? errors.add(:base, message) : errors.add(:captcha, message)
62
+ simple_captcha_options[:add_to_base] ? errors.add_to_base(message) : errors.add(:captcha, message)
65
63
  return false
66
64
  end
67
65
  end
@@ -17,7 +17,7 @@ module SimpleCaptcha #:nodoc
17
17
  return true if Rails.env.test?
18
18
 
19
19
  if params[:captcha]
20
- data = SimpleCaptcha::Utils::simple_captcha_value(params[:captcha_key] || session[:captcha])
20
+ data = SimpleCaptcha::Utils::simple_captcha_value(session[:captcha])
21
21
  result = data == params[:captcha].delete(" ").upcase
22
22
  SimpleCaptcha::Utils::simple_captcha_passed!(session[:captcha]) if result
23
23
  return result
@@ -1,11 +1,12 @@
1
1
  # encoding: utf-8
2
+
2
3
  require 'rails'
3
4
  require 'simple_captcha'
4
5
 
5
6
  module SimpleCaptcha
6
7
  class Engine < ::Rails::Engine
7
- config.before_initialize do
8
- unless defined?(Mongoid)
8
+ unless Object.const_defined?("Mongoid")
9
+ config.before_initialize do
9
10
  ActiveSupport.on_load :active_record do
10
11
  ActiveRecord::Base.send(:include, SimpleCaptcha::ModelHelpers)
11
12
  end
@@ -15,10 +16,6 @@ module SimpleCaptcha
15
16
  config.after_initialize do
16
17
  ActionView::Base.send(:include, SimpleCaptcha::ViewHelper)
17
18
  ActionView::Helpers::FormBuilder.send(:include, SimpleCaptcha::FormBuilder)
18
-
19
- if Object.const_defined?("Formtastic") && Formtastic.const_defined?("Inputs")
20
- require "simple_captcha/formtastic"
21
- end
22
19
  end
23
20
 
24
21
  config.app_middleware.use SimpleCaptcha::Middleware
@@ -3,12 +3,11 @@ require "formtastic"
3
3
  class SimpleCaptchaInput
4
4
  include ::Formtastic::Inputs::Base
5
5
  include ::Formtastic::Inputs::Base::Stringish
6
-
6
+
7
7
  def to_html
8
8
  input_wrapping do
9
9
  input_html_options.update :object => method
10
10
  label_html << builder.show_simple_captcha(input_html_options)
11
- # label_html << builder.text_field(method, input_html_options)
12
11
  end
13
12
  end
14
13
  end
@@ -0,0 +1,11 @@
1
+ require 'simple_form'
2
+
3
+ module SimpleCaptcha::SimpleForm
4
+ class CkeditorInput < ::SimpleForm::Inputs::Base
5
+ def input
6
+ @builder.simple_captcha(input_html_options)
7
+ end
8
+ end
9
+ end
10
+
11
+ ::SimpleForm::FormBuilder.map_type :simple_captcha, :to => SimpleCaptcha::SimpleForm::CkeditorInput
@@ -2,11 +2,37 @@ require 'tempfile'
2
2
  module SimpleCaptcha #:nodoc
3
3
  module ImageHelpers #:nodoc
4
4
 
5
+ mattr_accessor :image_styles
6
+ @@image_styles = {
7
+ 'embosed_silver' => ['-fill darkblue', '-shade 20x60', '-background white'],
8
+ 'simply_red' => ['-fill darkred', '-background white'],
9
+ 'simply_green' => ['-fill darkgreen', '-background white'],
10
+ 'simply_blue' => ['-fill darkblue', '-background white'],
11
+ 'distorted_black' => ['-fill darkblue', '-edge 10', '-background white'],
12
+ 'all_black' => ['-fill darkblue', '-edge 2', '-background white'],
13
+ 'charcoal_grey' => ['-fill darkblue', '-charcoal 5', '-background white'],
14
+ 'almost_invisible' => ['-fill red', '-solarize 50', '-background white']
15
+ }
16
+
5
17
  DISTORTIONS = ['low', 'medium', 'high']
6
18
 
7
19
  class << self
8
20
 
9
- def image_params(color = '#0089d1')
21
+ def image_params(key = 'simply_blue')
22
+ image_keys = @@image_styles.keys
23
+
24
+ style = begin
25
+ if key == 'random'
26
+ image_keys[rand(image_keys.length)]
27
+ else
28
+ image_keys.include?(key) ? key : 'simply_blue'
29
+ end
30
+ end
31
+
32
+ @@image_styles[style]
33
+ end
34
+
35
+ def image_params_from_color(color)
10
36
  ["-alpha set -background none -fill \"#{color}\""]
11
37
  end
12
38
 
@@ -38,11 +64,16 @@ module SimpleCaptcha #:nodoc
38
64
  def generate_simple_captcha_image(simple_captcha_key) #:nodoc
39
65
  amplitude, frequency = ImageHelpers.distortion(SimpleCaptcha.distortion)
40
66
  text = Utils::simple_captcha_new_value(simple_captcha_key)
41
- params = ImageHelpers.image_params(SimpleCaptcha.image_color).dup
67
+ if SimpleCaptcha.image_color.nil?
68
+ params = ImageHelpers.image_params(SimpleCaptcha.image_style).dup
69
+ else
70
+ params = ImageHelpers.image_params_from_color(SimpleCaptcha.image_color).dup
71
+ end
72
+
42
73
  params << "-size #{SimpleCaptcha.image_size} xc:transparent"
43
74
  params << "-gravity \"Center\""
44
75
  if params.join(' ').index('-pointsize').nil?
45
- params << "-pointsize 35"
76
+ params << "-pointsize #{SimpleCaptcha.pointsize}"
46
77
  end
47
78
  dst = Tempfile.new(RUBY_VERSION < '1.9' ? 'simple_captcha.png' : ['simple_captcha', '.png'], SimpleCaptcha.tmp_path)
48
79
  dst.binmode
@@ -58,13 +89,13 @@ module SimpleCaptcha #:nodoc
58
89
  end
59
90
 
60
91
  params << "\"#{File.expand_path(dst.path)}\""
61
- # puts "convert " + params.join(' ')
92
+ # puts "convert " + params.join(' ')
62
93
  SimpleCaptcha::Utils::run("convert", params.join(' '))
63
94
 
64
95
  dst.close
65
96
 
66
97
  File.expand_path(dst.path)
67
- #dst
98
+ #dst
68
99
  end
69
100
  end
70
101
  end
@@ -26,8 +26,14 @@ module SimpleCaptcha
26
26
  request = Rack::Request.new(env)
27
27
  code = request.params["code"]
28
28
  body = []
29
+
29
30
  if !code.blank? && Utils::simple_captcha_value(code)
30
- return send_file(generate_simple_captcha_image(code), :type => 'image/png', :disposition => 'inline', :filename => 'simple_captcha.png')
31
+ #status, headers, body = @app.call(env)
32
+ #status = 200
33
+ #body = generate_simple_captcha_image(code)
34
+ #headers['Content-Type'] = 'image/jpeg'
35
+
36
+ return send_file(generate_simple_captcha_image(code), :type => 'image/jpeg', :disposition => 'inline', :filename => 'simple_captcha.jpg')
31
37
  end
32
38
 
33
39
  [status, headers, body]
@@ -44,9 +50,9 @@ module SimpleCaptcha
44
50
 
45
51
  status = options[:status] || 200
46
52
  headers = {"Content-Disposition" => "#{options[:disposition]}; filename='#{options[:filename]}'", "Content-Type" => options[:type], 'Content-Transfer-Encoding' => 'binary', 'Cache-Control' => 'private'}
47
- response_body = File.open(path, 'rb').read
48
- File.unlink(path)
49
- [status, headers, [response_body]]
53
+ response_body = File.open(path, "rb")
54
+
55
+ [status, headers, response_body]
50
56
  end
51
57
  end
52
58
  end
@@ -1,33 +1,23 @@
1
- module SimpleCaptcha
2
- class SimpleCaptchaData < ::ActiveRecord::Base
3
- def self.rails3?
4
- ::ActiveRecord::VERSION::MAJOR == 3
5
- end
6
-
7
- if rails3?
8
- # Fixes deprecation warning in Rails 3.2:
9
- # DEPRECATION WARNING: Calling set_table_name is deprecated. Please use `self.table_name = 'the_name'` instead.
10
- self.table_name = "simple_captcha_data"
11
- else
12
- set_table_name "simple_captcha_data"
13
- end
14
-
15
- attr_accessible :key, :value
16
-
17
- class << self
18
- def get_data(key)
19
- data = find_by_key(key) || new(:key => key)
20
- end
21
-
22
- def remove_data(key)
23
- delete_all(["#{connection.quote_column_name(:key)} = ?", key])
24
- clear_old_data(1.hour.ago)
25
- end
26
-
27
- def clear_old_data(time = 1.hour.ago)
28
- return unless Time === time
29
- delete_all(["#{connection.quote_column_name(:updated_at)} < ?", time])
30
- end
31
- end
32
- end
33
- end
1
+ module SimpleCaptcha
2
+ class SimpleCaptchaData < ::ActiveRecord::Base
3
+ self.table_name = "simple_captcha_data"
4
+
5
+ attr_accessible :key, :value
6
+
7
+ class << self
8
+ def get_data(key)
9
+ data = find_by_key(key) || new(:key => key)
10
+ end
11
+
12
+ def remove_data(key)
13
+ delete_all(["#{connection.quote_column_name(:key)} = ?", key])
14
+ clear_old_data(1.hour.ago)
15
+ end
16
+
17
+ def clear_old_data(time = 1.hour.ago)
18
+ return unless Time === time
19
+ delete_all(["#{connection.quote_column_name(:updated_at)} < ?", time])
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,14 +1,14 @@
1
1
  module SimpleCaptcha
2
2
  class SimpleCaptchaData
3
3
  include Mongoid::Document
4
+ include Mongoid::Timestamps
4
5
 
5
6
  field :key, :type => String
6
7
  field :value, :type => String
7
- field :created_at, :type => Time, default: -> { Time.now }
8
8
 
9
9
  class << self
10
10
  def get_data(key)
11
- data = SimpleCaptchaData.where(:key => key).first || new(:key => key)
11
+ SimpleCaptchaData.where(:key => key).first || new(:key => key)
12
12
  end
13
13
 
14
14
  def remove_data(key)
@@ -23,12 +23,13 @@ module SimpleCaptcha #:nodoc
23
23
  def self.simple_captcha_value(key) #:nodoc
24
24
  SimpleCaptchaData.get_data(key).value rescue nil
25
25
  end
26
-
26
+
27
27
  def self.simple_captcha_new_value(key) #:nodoc
28
28
  begin
29
29
  # very unsafe to display same code over and over
30
30
  value = ''
31
31
  # SimpleCaptcha.length.times{value << (48 + rand(10)).chr}
32
+
32
33
  SimpleCaptcha.length.times{value << (65 + rand(26)).chr}
33
34
  d = SimpleCaptchaData.get_data(key)
34
35
  d.value = value
@@ -38,7 +39,6 @@ module SimpleCaptcha #:nodoc
38
39
  nil
39
40
  end
40
41
  end
41
-
42
42
 
43
43
  def self.simple_captcha_passed!(key) #:nodoc
44
44
  SimpleCaptchaData.remove_data(key)
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module SimpleCaptcha
3
- VERSION = "0.2.1".freeze
3
+ VERSION = "0.3.1".freeze
4
4
  end
@@ -57,12 +57,12 @@ module SimpleCaptcha #:nodoc
57
57
 
58
58
  private
59
59
 
60
- def simple_captcha_image(ckey, options = {})
60
+ def simple_captcha_image(simple_captcha_key, options = {})
61
61
  defaults = {}
62
62
  defaults[:time] = options[:time] || Time.now.to_i
63
63
 
64
64
  query = defaults.collect{ |key, value| "#{key}=#{value}" }.join('&')
65
- url = "/simple_captcha?code=#{ckey}&#{query}"
65
+ url = "/simple_captcha?code=#{simple_captcha_key}&#{query}"
66
66
 
67
67
  "<img src='#{url}' alt='captcha' />".html_safe
68
68
  end
@@ -72,8 +72,7 @@ module SimpleCaptcha #:nodoc
72
72
  text_field(options[:object], :captcha, :value => '', :autocomplete => 'off') +
73
73
  hidden_field(options[:object], :captcha_key, {:value => options[:field_value]})
74
74
  else
75
- text_field_tag(:captcha, nil, :autocomplete => 'off') +
76
- hidden_field_tag(:captcha_key, options[:field_value])
75
+ text_field_tag(:captcha, nil, :autocomplete => 'off')
77
76
  end
78
77
  end
79
78
 
metadata CHANGED
@@ -1,43 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glebtv-simple_captcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Pavlo Galeta
9
- - Igor Galeta
8
+ - GlebTv
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-12-01 00:00:00.000000000 Z
12
+ date: 2013-03-12 00:00:00.000000000 Z
14
13
  dependencies: []
15
- description: SimpleCaptcha is available to be used with Rails 3 or above and also
16
- it provides the backward compatibility with previous versions of Rails.
17
- email: galeta.igor@gmail.com
14
+ description: .
15
+ email: i@gleb.tv
18
16
  executables: []
19
17
  extensions: []
20
18
  extra_rdoc_files:
21
19
  - README.rdoc
22
20
  files:
21
+ - lib/simple_captcha.rb
22
+ - lib/generators/simple_captcha_generator.rb
23
23
  - lib/generators/templates/partial.erb
24
24
  - lib/generators/templates/migration.rb
25
- - lib/generators/simple_captcha_generator.rb
26
25
  - lib/generators/USAGE
27
- - lib/simple_captcha/active_record.rb
28
- - lib/simple_captcha/version.rb
29
- - lib/simple_captcha/view.rb
30
- - lib/simple_captcha/utils.rb
31
26
  - lib/simple_captcha/controller.rb
32
- - lib/simple_captcha/formtastic.rb
33
- - lib/simple_captcha/mongoid.rb
34
- - lib/simple_captcha/simple_captcha_data_ar.rb
35
- - lib/simple_captcha/engine.rb
36
- - lib/simple_captcha/form_builder.rb
27
+ - lib/simple_captcha/storage/mongoid.rb
28
+ - lib/simple_captcha/storage/active_record.rb
29
+ - lib/simple_captcha/view.rb
30
+ - lib/simple_captcha/hooks/form_builder.rb
31
+ - lib/simple_captcha/hooks/formtastic.rb
32
+ - lib/simple_captcha/hooks/simple_form.rb
37
33
  - lib/simple_captcha/middleware.rb
38
- - lib/simple_captcha/simple_captcha_data_mongoid.rb
34
+ - lib/simple_captcha/engine.rb
39
35
  - lib/simple_captcha/image.rb
40
- - lib/simple_captcha.rb
36
+ - lib/simple_captcha/utils.rb
37
+ - lib/simple_captcha/active_record.rb
38
+ - lib/simple_captcha/version.rb
41
39
  - Rakefile
42
40
  - README.rdoc
43
41
  - test/simple_captcha_test.rb
@@ -60,11 +58,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
58
  - !ruby/object:Gem::Version
61
59
  version: '0'
62
60
  requirements: []
63
- rubyforge_project: glebtv-simple_captcha
61
+ rubyforge_project:
64
62
  rubygems_version: 1.8.22
65
63
  signing_key:
66
64
  specification_version: 3
67
- summary: SimpleCaptcha is the simplest and a robust captcha plugin.
65
+ summary: A fork of a fork of a fork of simple_captcha.
68
66
  test_files:
69
67
  - test/simple_captcha_test.rb
70
68
  has_rdoc:
@@ -1,75 +0,0 @@
1
- module SimpleCaptcha #:nodoc
2
- module ModelHelpers #:nodoc
3
- def self.included(base)
4
- base.extend(SingletonMethods)
5
- end
6
-
7
- # To implement model based simple captcha use this method in the model as...
8
- #
9
- # class User
10
- # include Mongoid::Document
11
- # include Mongoid::SimpleCaptcha
12
- # apply_simple_captcha :message => "my customized message"
13
- #
14
- # end
15
- #
16
- # Customize the error message by using :message, the default message is "Captcha did not match".
17
- # As in the applications captcha is needed with a very few cases like signing up the new user, but
18
- # not every time you need to authenticate the captcha with @user.save. So as to maintain simplicity
19
- # here we have the explicit method to save the instace with captcha validation as...
20
- #
21
- # * to validate the instance
22
- #
23
- # @user.valid_with_captcha? # whene captcha validation is required.
24
- #
25
- # @user.valid? # when captcha validation is not required.
26
- #
27
- # * to save the instance
28
- #
29
- # @user.save_with_captcha # whene captcha validation is required.
30
- #
31
- # @user.save # when captcha validation is not required.
32
- module SingletonMethods
33
- def apply_simple_captcha(options = {})
34
- options = { :add_to_base => false }.merge(options)
35
-
36
- class_attribute :simple_captcha_options
37
- self.simple_captcha_options = options
38
-
39
- unless self.is_a?(ClassMethods)
40
- include InstanceMethods
41
- extend ClassMethods
42
-
43
- attr_accessor :captcha, :captcha_key
44
- end
45
- end
46
- end
47
-
48
- module ClassMethods
49
- end
50
-
51
- module InstanceMethods
52
-
53
- def valid_with_captcha?
54
- [valid?, is_captcha_valid?].all?
55
- end
56
-
57
- def is_captcha_valid?
58
- return true if Rails.env.test?
59
-
60
- if captcha && captcha.upcase.delete(" ") == SimpleCaptcha::Utils::simple_captcha_value(captcha_key)
61
- SimpleCaptcha::Utils::simple_captcha_passed!(captcha_key)
62
- return true
63
- else
64
- message = simple_captcha_options[:message] || I18n.t(self.class.model_name.downcase, :scope => [:simple_captcha, :message], :default => :default)
65
- simple_captcha_options[:add_to_base] ? errors.add(:base, message) : errors.add(:captcha, message)
66
- return false
67
- end
68
- end
69
-
70
- def save_with_captcha
71
- valid_with_captcha? && save(:validate => false)
72
- end
73
- end
74
- end
75
- end