galetahub-simple_captcha 0.1.3 → 0.1.4
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.
- data/README.rdoc +9 -2
- data/lib/simple_captcha.rb +12 -2
- data/lib/simple_captcha/active_record.rb +4 -1
- data/lib/simple_captcha/controller.rb +1 -1
- data/lib/simple_captcha/form_builder.rb +8 -1
- data/lib/simple_captcha/formtastic.rb +1 -1
- data/lib/simple_captcha/image.rb +5 -3
- data/lib/simple_captcha/simple_captcha_data.rb +11 -1
- data/lib/simple_captcha/simple_captcha_data_mongoid.rb +25 -0
- data/lib/simple_captcha/version.rb +1 -1
- data/lib/simple_captcha/view.rb +9 -4
- metadata +37 -53
data/README.rdoc
CHANGED
@@ -28,7 +28,7 @@ backward compatibility with previous versions of Rails.
|
|
28
28
|
|
29
29
|
or
|
30
30
|
|
31
|
-
gem '
|
31
|
+
gem 'simple_captcha', :git => 'git://github.com/galetahub/simple-captcha.git'
|
32
32
|
|
33
33
|
==Setup
|
34
34
|
|
@@ -69,7 +69,7 @@ In the view file within the form tags write this code
|
|
69
69
|
|
70
70
|
and in the model class add this code
|
71
71
|
|
72
|
-
class User < ActiveRecord::
|
72
|
+
class User < ActiveRecord::Base
|
73
73
|
apply_simple_captcha
|
74
74
|
end
|
75
75
|
|
@@ -166,6 +166,13 @@ You can provide the path where image_magick is installed as well:
|
|
166
166
|
sc.image_magick_path = '/usr/bin' # you can check this from console by running: which convert
|
167
167
|
end
|
168
168
|
|
169
|
+
You can provide the path where should be stored tmp files.
|
170
|
+
It's usefull when you dont have acces to /tmp (default directory)
|
171
|
+
|
172
|
+
SimpleCaptcha.setup do |sc|
|
173
|
+
sc.tmp_path = '/tmp' # or somewhere in project eg. Rails.root.join('tmp/simple_captcha').to_s, make shure directory exists
|
174
|
+
end
|
175
|
+
|
169
176
|
|
170
177
|
===How to change the CSS for SimpleCaptcha DOM elements?
|
171
178
|
You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file.
|
data/lib/simple_captcha.rb
CHANGED
@@ -6,12 +6,18 @@ module SimpleCaptcha
|
|
6
6
|
autoload :ImageHelpers, 'simple_captcha/image'
|
7
7
|
autoload :ViewHelper, 'simple_captcha/view'
|
8
8
|
autoload :ControllerHelpers, 'simple_captcha/controller'
|
9
|
-
autoload :ModelHelpers, 'simple_captcha/active_record'
|
10
9
|
|
11
10
|
autoload :FormBuilder, 'simple_captcha/form_builder'
|
12
11
|
autoload :CustomFormBuilder, 'simple_captcha/formtastic'
|
13
12
|
|
14
|
-
|
13
|
+
if defined?(ActiveRecord)
|
14
|
+
autoload :ModelHelpers, 'simple_captcha/active_record'
|
15
|
+
autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data'
|
16
|
+
else
|
17
|
+
autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data_mongoid.rb'
|
18
|
+
end
|
19
|
+
|
20
|
+
|
15
21
|
autoload :Middleware, 'simple_captcha/middleware'
|
16
22
|
|
17
23
|
mattr_accessor :image_size
|
@@ -40,6 +46,10 @@ module SimpleCaptcha
|
|
40
46
|
mattr_accessor :image_magick_path
|
41
47
|
@@image_magick_path = ''
|
42
48
|
|
49
|
+
# tmp directory
|
50
|
+
mattr_accessor :tmp_path
|
51
|
+
@@tmp_path = nil
|
52
|
+
|
43
53
|
def self.add_image_style(name, params = [])
|
44
54
|
SimpleCaptcha::ImageHelpers.image_styles.update(name.to_s => params)
|
45
55
|
end
|
@@ -40,6 +40,7 @@ module SimpleCaptcha #:nodoc
|
|
40
40
|
extend ClassMethods
|
41
41
|
|
42
42
|
attr_accessor :captcha, :captcha_key
|
43
|
+
attr_accessible :captcha, :captcha_key
|
43
44
|
end
|
44
45
|
end
|
45
46
|
end
|
@@ -54,12 +55,14 @@ module SimpleCaptcha #:nodoc
|
|
54
55
|
end
|
55
56
|
|
56
57
|
def is_captcha_valid?
|
58
|
+
return true if Rails.env.test?
|
59
|
+
|
57
60
|
if captcha && captcha.upcase.delete(" ") == SimpleCaptcha::Utils::simple_captcha_value(captcha_key)
|
58
61
|
SimpleCaptcha::Utils::simple_captcha_passed!(captcha_key)
|
59
62
|
return true
|
60
63
|
else
|
61
64
|
message = simple_captcha_options[:message] || I18n.t(self.class.model_name.downcase, :scope => [:simple_captcha, :message], :default => :default)
|
62
|
-
simple_captcha_options[:add_to_base] ? errors.
|
65
|
+
simple_captcha_options[:add_to_base] ? errors.add(:base, message) : errors.add(:captcha, message)
|
63
66
|
return false
|
64
67
|
end
|
65
68
|
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(session[:captcha])
|
20
|
+
data = SimpleCaptcha::Utils::simple_captcha_value(params[:captcha_key] || 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
|
@@ -3,6 +3,9 @@ module SimpleCaptcha
|
|
3
3
|
def self.included(base)
|
4
4
|
base.send(:include, SimpleCaptcha::ViewHelper)
|
5
5
|
base.send(:include, SimpleCaptcha::FormBuilder::ClassMethods)
|
6
|
+
base.send(:include, ActionView::Helpers)
|
7
|
+
base.send(:include, Sprockets::Helpers::RailsHelper)
|
8
|
+
base.send(:include, Sprockets::Helpers::IsolatedHelper)
|
6
9
|
|
7
10
|
base.delegate :render, :session, :to => :template
|
8
11
|
end
|
@@ -26,7 +29,11 @@ module SimpleCaptcha
|
|
26
29
|
end
|
27
30
|
|
28
31
|
def simple_captcha_field(options={})
|
29
|
-
|
32
|
+
html = {:autocomplete => 'off', :required => 'required', :value => ''}
|
33
|
+
html.merge!(options[:input_html] || {})
|
34
|
+
html[:placeholder] = options[:placeholder] || I18n.t('simple_captcha.placeholder')
|
35
|
+
|
36
|
+
text_field(:captcha, html) +
|
30
37
|
hidden_field(:captcha_key, {:value => options[:field_value]})
|
31
38
|
end
|
32
39
|
end
|
data/lib/simple_captcha/image.rb
CHANGED
@@ -64,14 +64,16 @@ module SimpleCaptcha #:nodoc
|
|
64
64
|
params = ImageHelpers.image_params(SimpleCaptcha.image_style).dup
|
65
65
|
params << "-size #{SimpleCaptcha.image_size}"
|
66
66
|
params << "-wave #{amplitude}x#{frequency}"
|
67
|
-
params << "-gravity 'Center'"
|
67
|
+
#params << "-gravity 'Center'"
|
68
|
+
params << "-gravity \"Center\""
|
68
69
|
params << "-pointsize 22"
|
69
70
|
params << "-implode 0.2"
|
70
71
|
|
71
|
-
dst = RUBY_VERSION < '1.9' ?
|
72
|
+
dst = Tempfile.new(RUBY_VERSION < '1.9' ? 'simple_captcha.jpg' : ['simple_captcha', '.jpg'], SimpleCaptcha.tmp_path)
|
72
73
|
dst.binmode
|
73
74
|
|
74
|
-
params << "label:#{text} '#{File.expand_path(dst.path)}'"
|
75
|
+
#params << "label:#{text} '#{File.expand_path(dst.path)}'"
|
76
|
+
params << "label:#{text} \"#{File.expand_path(dst.path)}\""
|
75
77
|
|
76
78
|
SimpleCaptcha::Utils::run("convert", params.join(' '))
|
77
79
|
|
@@ -1,6 +1,16 @@
|
|
1
1
|
module SimpleCaptcha
|
2
2
|
class SimpleCaptchaData < ::ActiveRecord::Base
|
3
|
-
|
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
|
4
14
|
|
5
15
|
attr_accessible :key, :value
|
6
16
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module SimpleCaptcha
|
2
|
+
class SimpleCaptchaData
|
3
|
+
include Mongoid::Document
|
4
|
+
include Mongoid::Timestamps
|
5
|
+
|
6
|
+
field :key, type: String
|
7
|
+
field :value, type: String
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def get_data(key)
|
11
|
+
data = where(:key => key).first || new(:key => key)
|
12
|
+
end
|
13
|
+
|
14
|
+
def remove_data(key)
|
15
|
+
where(:key => key).delete_all
|
16
|
+
clear_old_data(1.hour.ago)
|
17
|
+
end
|
18
|
+
|
19
|
+
def clear_old_data(time = 1.hour.ago)
|
20
|
+
return unless Time === time
|
21
|
+
where(:updated_at.lte => time).delete_all
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/simple_captcha/view.rb
CHANGED
@@ -62,17 +62,22 @@ module SimpleCaptcha #:nodoc
|
|
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=#{simple_captcha_key}&#{query}"
|
65
|
+
url = "#{ENV['RAILS_RELATIVE_URL_ROOT']}/simple_captcha?code=#{simple_captcha_key}&#{query}"
|
66
66
|
|
67
|
-
|
67
|
+
tag('img', :src => url, :alt => 'captcha')
|
68
68
|
end
|
69
69
|
|
70
70
|
def simple_captcha_field(options={})
|
71
|
+
html = {:autocomplete => 'off', :required => 'required'}
|
72
|
+
html.merge!(options[:input_html] || {})
|
73
|
+
html[:placeholder] = options[:placeholder] || I18n.t('simple_captcha.placeholder')
|
74
|
+
|
71
75
|
if options[:object]
|
72
|
-
text_field(options[:object], :captcha, :value => ''
|
76
|
+
text_field(options[:object], :captcha, html.merge(:value => '')) +
|
73
77
|
hidden_field(options[:object], :captcha_key, {:value => options[:field_value]})
|
74
78
|
else
|
75
|
-
text_field_tag(:captcha, nil,
|
79
|
+
text_field_tag(:captcha, nil, html) +
|
80
|
+
hidden_field_tag(:captcha_key, options[:field_value])
|
76
81
|
end
|
77
82
|
end
|
78
83
|
|
metadata
CHANGED
@@ -1,84 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: galetahub-simple_captcha
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 3
|
10
|
-
version: 0.1.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Pavlo Galeta
|
14
9
|
- Igor Galeta
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
date: 2011-12-20 00:00:00 Z
|
13
|
+
date: 2013-04-08 00:00:00.000000000 Z
|
20
14
|
dependencies: []
|
21
|
-
|
22
|
-
|
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.
|
23
17
|
email: galeta.igor@gmail.com
|
24
18
|
executables: []
|
25
|
-
|
26
19
|
extensions: []
|
27
|
-
|
28
|
-
extra_rdoc_files:
|
20
|
+
extra_rdoc_files:
|
29
21
|
- README.rdoc
|
30
|
-
files:
|
31
|
-
- lib/generators/simple_captcha_generator.rb
|
32
|
-
- lib/generators/templates/migration.rb
|
33
|
-
- lib/generators/templates/partial.erb
|
34
|
-
- lib/generators/USAGE
|
22
|
+
files:
|
35
23
|
- lib/simple_captcha.rb
|
36
|
-
- lib/simple_captcha/engine.rb
|
37
|
-
- lib/simple_captcha/utils.rb
|
38
|
-
- lib/simple_captcha/controller.rb
|
39
|
-
- lib/simple_captcha/view.rb
|
40
|
-
- lib/simple_captcha/formtastic.rb
|
41
24
|
- lib/simple_captcha/form_builder.rb
|
25
|
+
- lib/simple_captcha/controller.rb
|
26
|
+
- lib/simple_captcha/image.rb
|
42
27
|
- lib/simple_captcha/simple_captcha_data.rb
|
43
|
-
- lib/simple_captcha/middleware.rb
|
44
|
-
- lib/simple_captcha/version.rb
|
45
28
|
- lib/simple_captcha/active_record.rb
|
46
|
-
- lib/simple_captcha/
|
29
|
+
- lib/simple_captcha/version.rb
|
30
|
+
- lib/simple_captcha/engine.rb
|
31
|
+
- lib/simple_captcha/simple_captcha_data_mongoid.rb
|
32
|
+
- lib/simple_captcha/formtastic.rb
|
33
|
+
- lib/simple_captcha/middleware.rb
|
34
|
+
- lib/simple_captcha/utils.rb
|
35
|
+
- lib/simple_captcha/view.rb
|
36
|
+
- lib/generators/templates/partial.erb
|
37
|
+
- lib/generators/templates/migration.rb
|
38
|
+
- lib/generators/simple_captcha_generator.rb
|
39
|
+
- lib/generators/USAGE
|
47
40
|
- Rakefile
|
48
41
|
- README.rdoc
|
49
42
|
- test/simple_captcha_test.rb
|
50
|
-
homepage: http://github.com/
|
43
|
+
homepage: http://github.com/izzm/simple-captcha
|
51
44
|
licenses: []
|
52
|
-
|
53
45
|
post_install_message:
|
54
46
|
rdoc_options: []
|
55
|
-
|
56
|
-
require_paths:
|
47
|
+
require_paths:
|
57
48
|
- lib
|
58
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
50
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
|
65
|
-
- 0
|
66
|
-
version: "0"
|
67
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
56
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
76
61
|
requirements: []
|
77
|
-
|
78
|
-
|
79
|
-
rubygems_version: 1.8.10
|
62
|
+
rubyforge_project:
|
63
|
+
rubygems_version: 1.8.25
|
80
64
|
signing_key:
|
81
65
|
specification_version: 3
|
82
66
|
summary: SimpleCaptcha is the simplest and a robust captcha plugin.
|
83
|
-
test_files:
|
67
|
+
test_files:
|
84
68
|
- test/simple_captcha_test.rb
|