invisible_captcha 0.8.1 → 0.8.2
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/invisible_captcha/controller_ext.rb +8 -7
- data/lib/invisible_captcha/version.rb +1 -1
- data/lib/invisible_captcha/view_helpers.rb +1 -1
- data/spec/controllers_spec.rb +7 -6
- data/spec/view_helpers_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09a971b340dc4df300e6f158e631085f313501ac
|
4
|
+
data.tar.gz: c300f8cd9c6759b4d8e6f478d676e2b8f6990ace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e49701c76ee0586b6b30f5de9137d8e34ee59210d6ed37352937feab563d5e688e8a480dbc8fa2a837e3f8d807c6fb2583ea44c52c8ba507ac4852565266890b
|
7
|
+
data.tar.gz: 7657bcf22f0936068750a4c6ad321b762d56c78fe63818853c1607d8fcb708b277818a1a597b11cd5cbe1c1b9c9c88f02f2ec538f745a58d0faea7ddae072037
|
data/README.md
CHANGED
@@ -145,7 +145,7 @@ The `invisible_captcha` method accepts some options:
|
|
145
145
|
* `honeypot`: name of honeypot.
|
146
146
|
* `scope`: name of scope, ie: 'topic[subtitle]' -> 'topic' is the scope.
|
147
147
|
* `on_spam`: custom callback to be called on spam detection.
|
148
|
-
* `on_timestamp_spam`: custom callback to be called when form submitted too quickly.
|
148
|
+
* `on_timestamp_spam`: custom callback to be called when form submitted too quickly. The default action redirects to `:back` printing a warning in `flash[:error]`
|
149
149
|
|
150
150
|
### View helpers options:
|
151
151
|
|
@@ -20,7 +20,7 @@ module InvisibleCaptcha
|
|
20
20
|
if action = options[:on_timestamp_spam]
|
21
21
|
send(action)
|
22
22
|
else
|
23
|
-
flash
|
23
|
+
redirect_to :back, flash: { error: InvisibleCaptcha.timestamp_error_message }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -38,14 +38,15 @@ module InvisibleCaptcha
|
|
38
38
|
|
39
39
|
def invisible_captcha_timestamp?(options = {})
|
40
40
|
timestamp = session[:invisible_captcha_timestamp]
|
41
|
-
|
41
|
+
return false unless timestamp.present?
|
42
|
+
|
43
|
+
time_to_submit = Time.zone.now - DateTime.iso8601(timestamp)
|
42
44
|
|
43
45
|
# Consider as spam if form submitted too quickly
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
false
|
46
|
+
return false if time_to_submit >= InvisibleCaptcha.timestamp_threshold
|
47
|
+
|
48
|
+
logger.warn("Potential spam detected for IP #{request.env['REMOTE_ADDR']}. Invisible Captcha timestamp threshold not reached (took #{time_to_submit.to_i}s).")
|
49
|
+
true
|
49
50
|
end
|
50
51
|
|
51
52
|
def invisible_captcha?(options = {})
|
@@ -6,7 +6,7 @@ module InvisibleCaptcha
|
|
6
6
|
# @param scope [Symbol] name of honeypot scope, ie: topic => input name: topic[subtitle]
|
7
7
|
# @return [String] the generated html
|
8
8
|
def invisible_captcha(honeypot = nil, scope = nil, options = {})
|
9
|
-
session[:invisible_captcha_timestamp] ||= Time.zone.now
|
9
|
+
session[:invisible_captcha_timestamp] ||= Time.zone.now.iso8601
|
10
10
|
build_invisible_captcha(honeypot, scope, options)
|
11
11
|
end
|
12
12
|
|
data/spec/controllers_spec.rb
CHANGED
@@ -7,20 +7,21 @@ describe InvisibleCaptcha::ControllerExt, type: :controller do
|
|
7
7
|
|
8
8
|
context 'submission timestamp_threshold' do
|
9
9
|
before do
|
10
|
-
session[:invisible_captcha_timestamp] = Time.zone.now
|
10
|
+
session[:invisible_captcha_timestamp] = Time.zone.now.iso8601
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'fails if submission before timestamp_threshold' do
|
14
|
-
|
14
|
+
request.env['HTTP_REFERER'] = 'http://test.host/topics'
|
15
|
+
post :create, {topic: { title: 'foo' }}
|
15
16
|
|
16
|
-
expect(response).to redirect_to(new_topic_path)
|
17
17
|
expect(flash[:error]).to eq(InvisibleCaptcha.timestamp_error_message)
|
18
|
+
expect(response).to redirect_to :back
|
18
19
|
end
|
19
20
|
|
20
21
|
it 'allow custom on_timestamp_spam callback', focus: true do
|
21
|
-
put :update, id: 1, topic: { title: 'bar' }
|
22
|
+
put :update, {id: 1, topic: { title: 'bar' }}
|
22
23
|
|
23
|
-
expect(response
|
24
|
+
expect(response).to redirect_to(root_path)
|
24
25
|
end
|
25
26
|
|
26
27
|
context 'successful submissions' do
|
@@ -40,7 +41,7 @@ describe InvisibleCaptcha::ControllerExt, type: :controller do
|
|
40
41
|
|
41
42
|
context 'form field' do
|
42
43
|
before do
|
43
|
-
session[:invisible_captcha_timestamp] = Time.zone.now
|
44
|
+
session[:invisible_captcha_timestamp] = Time.zone.now.iso8601
|
44
45
|
# Wait for valid submission
|
45
46
|
sleep InvisibleCaptcha.timestamp_threshold
|
46
47
|
end
|
data/spec/view_helpers_spec.rb
CHANGED
@@ -64,6 +64,6 @@ describe InvisibleCaptcha::ViewHelpers, type: :helper do
|
|
64
64
|
it 'should set spam timestamp' do
|
65
65
|
InvisibleCaptcha.honeypots = [:foo_id]
|
66
66
|
invisible_captcha
|
67
|
-
expect(session[:invisible_captcha_timestamp]).to eq(Time.zone.now)
|
67
|
+
expect(session[:invisible_captcha_timestamp]).to eq(Time.zone.now.iso8601)
|
68
68
|
end
|
69
69
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invisible_captcha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Anguera Insa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|