simple_captcha2 0.4.3 → 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.
- checksums.yaml +5 -5
- data/README.md +39 -20
- data/Rakefile +8 -2
- data/lib/generators/simple_captcha_generator.rb +8 -1
- data/lib/generators/templates/migration5.rb +15 -0
- data/lib/generators/templates/migration_sequel.rb +17 -0
- data/lib/simple_captcha.rb +2 -0
- data/lib/simple_captcha/image.rb +1 -1
- data/lib/simple_captcha/simple_captcha_data.rb +2 -0
- data/lib/simple_captcha/simple_captcha_data_sequel.rb +22 -0
- data/lib/simple_captcha/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9109eee9cbbef0caa51b63ef969186a2efe0fb479597dc97ffbc118994fc443e
|
4
|
+
data.tar.gz: 6c2ed7db47e7f9b5c1ec924e17af38ed44103b6aaeb39ed3a2d0bb0630c88577
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01b783bb207580730aea77ab63ceaa142a77361609a31c14ea728405886f71f766dd4c26f61632eb8e482d993e55ab631fa74e29311db3a8be73421066b149b5
|
7
|
+
data.tar.gz: 953cb66bf597f7291ec0c898d85d358f72d7a0c5970db3c5c4d019effbf5d8fc00018bb67314a361a60a36cb5c1b4e1c10d3e6b17f9089905e566d97bdd5ce7d
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#SimpleCaptcha2
|
1
|
+
# SimpleCaptcha2
|
2
2
|
|
3
3
|
[](https://travis-ci.org/pludoni/simple-captcha)
|
4
4
|
[](https://badge.fury.io/rb/simple_captcha2)
|
@@ -7,7 +7,7 @@ SimpleCaptcha(2) is the simplest and a robust captcha plugin. Its implementation
|
|
7
7
|
SimpleCaptcha2 is available to be used with Rails 3 + 4.
|
8
8
|
This is a fork of the popular Rubygem ``simple_captcha`` which got abandoned.
|
9
9
|
|
10
|
-
##Features
|
10
|
+
## Features
|
11
11
|
|
12
12
|
* Zero FileSystem usage (secret code moved to db-store and image storage removed).
|
13
13
|
* Provides various image styles.
|
@@ -17,20 +17,28 @@ This is a fork of the popular Rubygem ``simple_captcha`` which got abandoned.
|
|
17
17
|
* Flexible DOM and CSS handling(There is a separate view partial for rendering SimpleCaptcha DOM elements).
|
18
18
|
* Automated removal of 1 hour old unmatched simple_captcha data.
|
19
19
|
|
20
|
-
##Requirements
|
20
|
+
## Requirements
|
21
21
|
|
22
22
|
* Ruby >= 1.9.3
|
23
23
|
* Rails >= 3.2
|
24
24
|
* ImageMagick should be installed on your machine to use this plugin.
|
25
25
|
visit http://www.imagemagick.org/script/index.php for more details.
|
26
26
|
|
27
|
-
|
27
|
+
|
28
|
+
|
29
|
+
## Installation
|
30
|
+
|
31
|
+
You might need to install Ghostscript on a Mac-System or a Debian-System:
|
28
32
|
|
29
33
|
```
|
30
34
|
brew install ghostscript
|
31
35
|
```
|
32
36
|
|
33
|
-
|
37
|
+
```
|
38
|
+
apt-get install ghostscript
|
39
|
+
```
|
40
|
+
|
41
|
+
The default font, that imagemagick uses is Arial. Make sure that font is available (``apt install ttf-mscorefonts-installer``) or change the font in the SimpleCaptcha config.
|
34
42
|
|
35
43
|
Put this into your Gemfile
|
36
44
|
|
@@ -114,7 +122,7 @@ Must add them:
|
|
114
122
|
:captcha, :captcha_key
|
115
123
|
```
|
116
124
|
|
117
|
-
####Form-Builder helper
|
125
|
+
#### Form-Builder helper
|
118
126
|
|
119
127
|
```erb
|
120
128
|
<%= form_for @user do |form| -%>
|
@@ -124,7 +132,7 @@ Must add them:
|
|
124
132
|
<% end -%>
|
125
133
|
```
|
126
134
|
|
127
|
-
####Validating with captcha
|
135
|
+
#### Validating with captcha
|
128
136
|
|
129
137
|
NOTE: @user.valid? will still work as it should, it will not validate the captcha code.
|
130
138
|
|
@@ -132,7 +140,7 @@ NOTE: @user.valid? will still work as it should, it will not validate the captch
|
|
132
140
|
@user.valid_with_captcha?
|
133
141
|
```
|
134
142
|
|
135
|
-
####Saving with captcha
|
143
|
+
#### Saving with captcha
|
136
144
|
|
137
145
|
NOTE: @user.save will still work as it should, it will not validate the captcha code.
|
138
146
|
|
@@ -140,7 +148,7 @@ NOTE: @user.save will still work as it should, it will not validate the captcha
|
|
140
148
|
@user.save_with_captcha
|
141
149
|
```
|
142
150
|
|
143
|
-
###Formtastic integration
|
151
|
+
### Formtastic integration
|
144
152
|
|
145
153
|
SimpleCaptcha detects if you are using Formtastic:
|
146
154
|
|
@@ -164,16 +172,27 @@ assert_equal 1, SimpleCaptcha::SimpleCaptchaData.count
|
|
164
172
|
fill_in 'captcha', with: SimpleCaptcha::SimpleCaptchaData.first.value
|
165
173
|
```
|
166
174
|
|
167
|
-
##
|
175
|
+
## ORM support
|
176
|
+
|
177
|
+
simple-captcha2 supports 3 type of ORM: ActiveRecord, Sequel and Mongoid.
|
178
|
+
|
179
|
+
Selection of ORM is base on loaded classes. If `ActiveRecord` is loaded then it will be used for the simple captcha data model.
|
180
|
+
If `ActiveRecord` is undefined, `Sequel` presence is tested. If `Sequel` is defined it will used for the simple captcha data model.
|
181
|
+
If not, `Mongoid` is used.
|
182
|
+
|
183
|
+
For instance if your application is using Sequel as an ORM just make sure you require `sequel-rails` gem before `simple-captcha2`
|
184
|
+
in your Gemfile and respective model will be selected automatically.
|
185
|
+
|
186
|
+
## Options & Examples
|
168
187
|
|
169
|
-
###View Options
|
188
|
+
### View Options
|
170
189
|
|
171
190
|
* ``:label`` - provides the custom text b/w the image and the text field, the default is "type the code from the image"
|
172
191
|
* ``:object`` - the name of the object of the model class, to implement the model based captcha.
|
173
192
|
* ``:code_type`` - return numeric only if set to 'numeric'
|
174
193
|
* ``:multiple`` - allow to use the same captcha in multiple forms in one page. True for the first appaerance and false for the rest.
|
175
194
|
|
176
|
-
###Global options
|
195
|
+
### Global options
|
177
196
|
|
178
197
|
* ``:image_style`` - provides the specific image style for the captcha image.
|
179
198
|
There are eight different styles available with the plugin as...
|
@@ -270,8 +289,8 @@ You can change the CSS of the SimpleCaptcha DOM elements as per your need in thi
|
|
270
289
|
|
271
290
|
``app/views/simple_captcha/_simple_captcha.erb``
|
272
291
|
|
273
|
-
###View's Examples
|
274
|
-
####Controller Based Example
|
292
|
+
### View's Examples
|
293
|
+
#### Controller Based Example
|
275
294
|
|
276
295
|
```erb
|
277
296
|
<%= show_simple_captcha %>
|
@@ -279,19 +298,19 @@ You can change the CSS of the SimpleCaptcha DOM elements as per your need in thi
|
|
279
298
|
<%= show_simple_captcha(:label => "human authentication") %>
|
280
299
|
```
|
281
300
|
|
282
|
-
####Model Based Example
|
301
|
+
#### Model Based Example
|
283
302
|
|
284
303
|
```erb
|
285
304
|
<%= show_simple_captcha(:object => 'user', :label => "human authentication") %>
|
286
305
|
```
|
287
306
|
|
288
|
-
####Model Options
|
307
|
+
#### Model Options
|
289
308
|
|
290
309
|
* ``:message`` - provides the custom message on failure of captcha authentication the default is "Secret Code did not match with the Image"
|
291
310
|
|
292
311
|
* ``:add_to_base`` - if set to true, appends the error message to the base.
|
293
312
|
|
294
|
-
#####Model's Example
|
313
|
+
##### Model's Example
|
295
314
|
|
296
315
|
```ruby
|
297
316
|
class User < ActiveRecord::Base
|
@@ -304,7 +323,7 @@ end
|
|
304
323
|
```
|
305
324
|
|
306
325
|
|
307
|
-
##I18n
|
326
|
+
## I18n
|
308
327
|
|
309
328
|
```yaml
|
310
329
|
en:
|
@@ -317,7 +336,7 @@ en:
|
|
317
336
|
user: "The secret Image and code were different"
|
318
337
|
```
|
319
338
|
|
320
|
-
##Contributing
|
339
|
+
## Contributing
|
321
340
|
|
322
341
|
For testing, generate a temporary Rails dummy app inside test:
|
323
342
|
|
@@ -333,7 +352,7 @@ Please add test cases when adding new functionality. I started with some basic e
|
|
333
352
|
|
334
353
|
The tests will be run on [Travis-CI](https://travis-ci.org/pludoni/simple-captcha).
|
335
354
|
|
336
|
-
##Who's who?
|
355
|
+
## Who's who?
|
337
356
|
|
338
357
|
Enjoy the simplest captcha implementation.
|
339
358
|
|
data/Rakefile
CHANGED
@@ -24,8 +24,14 @@ namespace :dummy do
|
|
24
24
|
task :setup do
|
25
25
|
require 'rails'
|
26
26
|
require 'simple_captcha'
|
27
|
-
|
28
|
-
|
27
|
+
if ENV["SEQUEL"].nil?
|
28
|
+
require File.expand_path('../test/lib/generators/simple_captcha/dummy/dummy_generator', __FILE__)
|
29
|
+
generator_class = SimpleCaptcha::DummyGenerator
|
30
|
+
else
|
31
|
+
require File.expand_path('../test/lib/generators/simple_captcha/dummy/dummy_generator_sequel', __FILE__)
|
32
|
+
generator_class = SimpleCaptcha::DummyGeneratorSequel
|
33
|
+
end
|
34
|
+
generator_class.start %w(--quiet)
|
29
35
|
end
|
30
36
|
|
31
37
|
desc 'destroy dummy Rails app under test/dummy'
|
@@ -17,6 +17,13 @@ class SimpleCaptchaGenerator < Rails::Generators::Base
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def create_captcha_migration
|
20
|
-
migration_template
|
20
|
+
migration_template migration_file, File.join('db/migrate', "create_simple_captcha_data.rb")
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def migration_file
|
26
|
+
return "migration_sequel.rb" if defined?(Sequel)
|
27
|
+
Rails::VERSION::MAJOR > 4 ? "migration5.rb" : "migration.rb"
|
21
28
|
end
|
22
29
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSimpleCaptchaData < ActiveRecord::Migration[4.2]
|
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
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
create_table :simple_captcha_data do
|
4
|
+
primary_key :id
|
5
|
+
String :key, size: 40
|
6
|
+
String :value, size: 6
|
7
|
+
DateTime :created_at
|
8
|
+
DateTime :updated_at
|
9
|
+
|
10
|
+
index :key, name: "idx_key"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
down do
|
15
|
+
drop_table :simple_captcha_data
|
16
|
+
end
|
17
|
+
end
|
data/lib/simple_captcha.rb
CHANGED
@@ -18,6 +18,8 @@ module SimpleCaptcha
|
|
18
18
|
|
19
19
|
if defined?(ActiveRecord)
|
20
20
|
autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data'
|
21
|
+
elsif defined?(Sequel)
|
22
|
+
autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data_sequel'
|
21
23
|
else
|
22
24
|
autoload :SimpleCaptchaData, 'simple_captcha/simple_captcha_data_mongoid.rb'
|
23
25
|
end
|
data/lib/simple_captcha/image.rb
CHANGED
@@ -74,10 +74,10 @@ module SimpleCaptcha #:nodoc
|
|
74
74
|
params << "-gravity Center"
|
75
75
|
params << "-pointsize 22"
|
76
76
|
params << "-implode #{ImageHelpers.implode}"
|
77
|
-
params << "label:#{text}"
|
78
77
|
unless SimpleCaptcha.font.empty?
|
79
78
|
params << "-font #{SimpleCaptcha.font}"
|
80
79
|
end
|
80
|
+
params << "label:#{text}"
|
81
81
|
if SimpleCaptcha.noise and SimpleCaptcha.noise > 0
|
82
82
|
params << "-evaluate Uniform-noise #{SimpleCaptcha.noise}"
|
83
83
|
end
|
@@ -26,6 +26,8 @@ module SimpleCaptcha
|
|
26
26
|
def clear_old_data(time = 1.hour.ago)
|
27
27
|
return unless Time === time
|
28
28
|
where(["#{connection.quote_column_name(:updated_at)} < ?", time]).delete_all
|
29
|
+
rescue ActiveRecord::Deadlocked => err
|
30
|
+
Rails.logger.error "#{err.class} #{err.message}"
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module SimpleCaptcha
|
2
|
+
class SimpleCaptchaData < Sequel::Model
|
3
|
+
plugin :update_or_create
|
4
|
+
plugin :timestamps, update_on_create: true
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def get_data(key)
|
8
|
+
find_or_new(key: key)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove_data(key)
|
12
|
+
where(key: key).delete
|
13
|
+
clear_old_data(1.hour.ago)
|
14
|
+
end
|
15
|
+
|
16
|
+
def clear_old_data(time = 1.hour.ago)
|
17
|
+
return unless Time === time
|
18
|
+
where {updated_at < time}.delete
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_captcha2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavlo Galeta
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2019-12-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -96,6 +96,8 @@ files:
|
|
96
96
|
- lib/generators/USAGE
|
97
97
|
- lib/generators/simple_captcha_generator.rb
|
98
98
|
- lib/generators/templates/migration.rb
|
99
|
+
- lib/generators/templates/migration5.rb
|
100
|
+
- lib/generators/templates/migration_sequel.rb
|
99
101
|
- lib/generators/templates/partial.erb
|
100
102
|
- lib/generators/templates/partial.haml
|
101
103
|
- lib/simple_captcha.rb
|
@@ -108,6 +110,7 @@ files:
|
|
108
110
|
- lib/simple_captcha/model_helpers.rb
|
109
111
|
- lib/simple_captcha/simple_captcha_data.rb
|
110
112
|
- lib/simple_captcha/simple_captcha_data_mongoid.rb
|
113
|
+
- lib/simple_captcha/simple_captcha_data_sequel.rb
|
111
114
|
- lib/simple_captcha/utils.rb
|
112
115
|
- lib/simple_captcha/version.rb
|
113
116
|
- lib/simple_captcha/view.rb
|
@@ -130,8 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
133
|
- !ruby/object:Gem::Version
|
131
134
|
version: '0'
|
132
135
|
requirements: []
|
133
|
-
|
134
|
-
rubygems_version: 2.5.1
|
136
|
+
rubygems_version: 3.0.6
|
135
137
|
signing_key:
|
136
138
|
specification_version: 4
|
137
139
|
summary: SimpleCaptcha is the simplest and a robust captcha plugin.
|