glebtv-simple_captcha 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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