invisible_captcha 0.4.1 → 0.5.0
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.md +22 -3
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/invisible_captcha.gemspec +4 -3
- data/lib/invisible_captcha.rb +7 -0
- data/lib/invisible_captcha/controller_helpers.rb +11 -0
- data/lib/invisible_captcha/view_helpers.rb +29 -8
- metadata +5 -5
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Invisible Captcha
|
2
|
-
Simple protection for ActiveModel (and ActiveRecord)
|
2
|
+
Simple spam protection for Rails applications using honeypot strategy. Support for ActiveModel (and ActiveRecord) forms and for non-RESTful resources.
|
3
3
|
|
4
4
|
## Installation
|
5
5
|
Add this line to you Gemfile:
|
@@ -15,9 +15,11 @@ gem install invisible_captcha
|
|
15
15
|
```
|
16
16
|
|
17
17
|
## Usage
|
18
|
+
|
19
|
+
### RESTful style
|
18
20
|
In your form:
|
19
21
|
|
20
|
-
```
|
22
|
+
```erb
|
21
23
|
<%= form_for(@topic) do |f| %>
|
22
24
|
|
23
25
|
<!-- You can use form helper -->
|
@@ -29,11 +31,28 @@ In your form:
|
|
29
31
|
<% end %>
|
30
32
|
```
|
31
33
|
|
32
|
-
In your
|
34
|
+
In your model:
|
33
35
|
|
34
36
|
```ruby
|
35
37
|
validates :subtitle, :invisible_captcha => true
|
36
38
|
```
|
37
39
|
|
40
|
+
### Non-RESTful style
|
41
|
+
In your form:
|
42
|
+
|
43
|
+
```erb
|
44
|
+
<%= form_tag(search_path) do %>
|
45
|
+
|
46
|
+
<%= invisible_captcha %>
|
47
|
+
|
48
|
+
<% end %>
|
49
|
+
```
|
50
|
+
|
51
|
+
In your controller:
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
before_filter :check_invisible_captcha
|
55
|
+
```
|
56
|
+
|
38
57
|
## License
|
39
58
|
Copyright (c) 2012 Marc Anguera. Invisible Captcha is released under the [MIT](http://opensource.org/licenses/MIT) License.
|
data/Rakefile
CHANGED
@@ -17,7 +17,7 @@ Jeweler::Tasks.new do |gem|
|
|
17
17
|
gem.homepage = "http://github.com/markets/invisible_captcha"
|
18
18
|
gem.license = "MIT"
|
19
19
|
gem.summary = %Q{Simple honeypot protection for RoR apps}
|
20
|
-
gem.description = %Q{Simple protection for
|
20
|
+
gem.description = %Q{Simple spam protection for Rails applications using honeypot strategy.}
|
21
21
|
gem.email = "srmarc.ai@gmail.com"
|
22
22
|
gem.authors = ["Marc Anguera Insa"]
|
23
23
|
# dependencies defined in Gemfile
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/invisible_captcha.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "invisible_captcha"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Marc Anguera Insa"]
|
12
|
-
s.date = "2013-
|
13
|
-
s.description = "Simple protection for
|
12
|
+
s.date = "2013-09-02"
|
13
|
+
s.description = "Simple spam protection for Rails applications using honeypot strategy."
|
14
14
|
s.email = "srmarc.ai@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.md"
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
"VERSION",
|
23
23
|
"invisible_captcha.gemspec",
|
24
24
|
"lib/invisible_captcha.rb",
|
25
|
+
"lib/invisible_captcha/controller_helpers.rb",
|
25
26
|
"lib/invisible_captcha/form_helpers.rb",
|
26
27
|
"lib/invisible_captcha/validator.rb",
|
27
28
|
"lib/invisible_captcha/view_helpers.rb"
|
data/lib/invisible_captcha.rb
CHANGED
@@ -1,14 +1,21 @@
|
|
1
1
|
GEM_PATH = File.dirname(__FILE__) + "/invisible_captcha"
|
2
|
+
require "#{GEM_PATH}/controller_helpers.rb"
|
2
3
|
require "#{GEM_PATH}/view_helpers.rb"
|
3
4
|
require "#{GEM_PATH}/form_helpers.rb"
|
4
5
|
require "#{GEM_PATH}/validator.rb"
|
5
6
|
|
6
7
|
module InvisibleCaptcha
|
7
8
|
|
9
|
+
# Default sentence for humans if text field is visible
|
8
10
|
mattr_accessor :sentence_for_humans
|
9
11
|
self.sentence_for_humans = 'If you are a human, ignore this field'
|
10
12
|
|
13
|
+
# Default error message for validator
|
11
14
|
mattr_accessor :error_message
|
12
15
|
self.error_message = 'YOU ARE A ROBOT!'
|
13
16
|
|
17
|
+
# Default fake field name for text_field_tag
|
18
|
+
mattr_accessor :fake_field
|
19
|
+
self.fake_field = :query
|
20
|
+
|
14
21
|
end
|
@@ -1,28 +1,49 @@
|
|
1
1
|
module InvisibleCaptcha
|
2
2
|
module ViewHelpers
|
3
3
|
|
4
|
-
def invisible_captcha(
|
5
|
-
build_invisible_captcha(
|
4
|
+
def invisible_captcha(resource = nil, method = nil)
|
5
|
+
build_invisible_captcha(resource, method)
|
6
6
|
end
|
7
7
|
|
8
8
|
private
|
9
9
|
|
10
|
-
def build_invisible_captcha(
|
10
|
+
def build_invisible_captcha(resource = nil, method = nil)
|
11
|
+
resource = resource ? resource.to_s : InvisibleCaptcha.fake_field
|
11
12
|
label = InvisibleCaptcha.sentence_for_humans
|
12
|
-
html_id =
|
13
|
+
html_id = generate_html_id(resource)
|
13
14
|
|
14
15
|
content_tag(:div, :id => html_id) do
|
15
|
-
|
16
|
-
label_tag(
|
17
|
-
text_field_tag(
|
16
|
+
insert_inline_css(html_id) +
|
17
|
+
label_tag(build_label_name(resource, method), label) +
|
18
|
+
text_field_tag(build_text_field_name(resource, method))
|
18
19
|
end.html_safe
|
19
20
|
end
|
20
21
|
|
21
|
-
def
|
22
|
+
def generate_html_id(resource)
|
23
|
+
"#{resource}_#{Time.now.to_i}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def insert_inline_css(container_id)
|
22
27
|
content_tag(:style, :type => 'text/css', :media => 'screen', :scoped => 'scoped') do
|
23
28
|
"##{container_id} { display:none; }"
|
24
29
|
end
|
25
30
|
end
|
31
|
+
|
32
|
+
def build_label_name(resource, method = nil)
|
33
|
+
if method.present?
|
34
|
+
"#{resource}_#{method}"
|
35
|
+
else
|
36
|
+
resource
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def build_text_field_name(resource, method = nil)
|
41
|
+
if method.present?
|
42
|
+
"#{resource}[#{method}]"
|
43
|
+
else
|
44
|
+
resource
|
45
|
+
end
|
46
|
+
end
|
26
47
|
end
|
27
48
|
end
|
28
49
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invisible_captcha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
@@ -75,8 +75,7 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
|
-
description: Simple protection for
|
79
|
-
honeypot strategy.
|
78
|
+
description: Simple spam protection for Rails applications using honeypot strategy.
|
80
79
|
email: srmarc.ai@gmail.com
|
81
80
|
executables: []
|
82
81
|
extensions: []
|
@@ -89,6 +88,7 @@ files:
|
|
89
88
|
- VERSION
|
90
89
|
- invisible_captcha.gemspec
|
91
90
|
- lib/invisible_captcha.rb
|
91
|
+
- lib/invisible_captcha/controller_helpers.rb
|
92
92
|
- lib/invisible_captcha/form_helpers.rb
|
93
93
|
- lib/invisible_captcha/validator.rb
|
94
94
|
- lib/invisible_captcha/view_helpers.rb
|
@@ -107,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
107
|
version: '0'
|
108
108
|
segments:
|
109
109
|
- 0
|
110
|
-
hash:
|
110
|
+
hash: -400465203
|
111
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
112
|
none: false
|
113
113
|
requirements:
|