devise_security_extension 0.3.6 → 0.4.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/Gemfile CHANGED
@@ -1,13 +1,14 @@
1
1
  source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
- gem "rails"
4
+ gem "rails", "~> 3.0.0"
5
5
  gem "devise"
6
- gem "rails_email_validator"
7
6
 
8
7
  # Add dependencies to develop your gem here.
9
8
  # Include everything needed to run rake, tests, features, etc.
10
9
  group :development do
10
+ gem "rails_email_validator"
11
+ gem "easy_captcha"
11
12
  gem "bundler", "~> 1.0.0"
12
13
  gem "jeweler", "~> 1.5.2"
13
14
  gem "rcov", ">= 0"
data/Gemfile.lock CHANGED
@@ -1,9 +1,20 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (0.6.1)
5
- actionpack (>= 0.9.5)
6
- actionpack (1.4.0)
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.7)
6
+ actionpack (= 3.0.7)
7
+ mail (~> 2.2.15)
8
+ actionpack (3.0.7)
9
+ activemodel (= 3.0.7)
10
+ activesupport (= 3.0.7)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.5.0)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.14)
16
+ rack-test (~> 0.5.7)
17
+ tzinfo (~> 0.3.23)
7
18
  activemodel (3.0.7)
8
19
  activesupport (= 3.0.7)
9
20
  builder (~> 2.1.2)
@@ -13,6 +24,9 @@ GEM
13
24
  activesupport (= 3.0.7)
14
25
  arel (~> 2.0.2)
15
26
  tzinfo (~> 0.3.23)
27
+ activeresource (3.0.7)
28
+ activemodel (= 3.0.7)
29
+ activesupport (= 3.0.7)
16
30
  activesupport (3.0.7)
17
31
  arel (2.0.10)
18
32
  bcrypt-ruby (2.1.4)
@@ -21,23 +35,53 @@ GEM
21
35
  bcrypt-ruby (~> 2.1.2)
22
36
  orm_adapter (~> 0.0.3)
23
37
  warden (~> 1.0.3)
38
+ easy_captcha (0.4.1)
39
+ rails (>= 3.0.0)
40
+ rails (>= 3.0.0)
41
+ rmagick
42
+ rmagick
43
+ erubis (2.6.6)
44
+ abstract (>= 1.0.0)
24
45
  git (1.2.5)
25
46
  i18n (0.5.0)
26
47
  jeweler (1.5.2)
27
48
  bundler (~> 1.0.0)
28
49
  git (>= 1.2.5)
29
50
  rake
51
+ mail (2.2.19)
52
+ activesupport (>= 2.3.6)
53
+ i18n (>= 0.4.0)
54
+ mime-types (~> 1.16)
55
+ treetop (~> 1.4.8)
56
+ mime-types (1.16)
30
57
  orm_adapter (0.0.5)
31
- rack (1.3.0)
32
- rails (0.9.5)
33
- actionmailer (>= 0.6.1)
34
- actionpack (>= 1.4.0)
35
- activerecord (>= 1.6.0)
36
- rake (>= 0.4.15)
58
+ polyglot (0.3.1)
59
+ rack (1.2.3)
60
+ rack-mount (0.6.14)
61
+ rack (>= 1.0.0)
62
+ rack-test (0.5.7)
63
+ rack (>= 1.0)
64
+ rails (3.0.7)
65
+ actionmailer (= 3.0.7)
66
+ actionpack (= 3.0.7)
67
+ activerecord (= 3.0.7)
68
+ activeresource (= 3.0.7)
69
+ activesupport (= 3.0.7)
70
+ bundler (~> 1.0)
71
+ railties (= 3.0.7)
37
72
  rails_email_validator (0.1.4)
38
73
  activemodel (>= 3.0.0)
39
- rake (0.9.1)
74
+ railties (3.0.7)
75
+ actionpack (= 3.0.7)
76
+ activesupport (= 3.0.7)
77
+ rake (>= 0.8.7)
78
+ thor (~> 0.14.4)
79
+ rake (0.9.2)
40
80
  rcov (0.9.9)
81
+ rmagick (2.13.1)
82
+ thor (0.14.6)
83
+ treetop (1.4.9)
84
+ polyglot (>= 0.3.1)
41
85
  tzinfo (0.3.27)
42
86
  warden (1.0.4)
43
87
  rack (>= 1.0)
@@ -48,7 +92,8 @@ PLATFORMS
48
92
  DEPENDENCIES
49
93
  bundler (~> 1.0.0)
50
94
  devise
95
+ easy_captcha
51
96
  jeweler (~> 1.5.2)
52
- rails
97
+ rails (~> 3.0.0)
53
98
  rails_email_validator
54
99
  rcov
data/README.rdoc CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  an security extension for devise
4
4
 
5
+ == Features
6
+
7
+ * expire passwords (update password with current password)
8
+ * strong password validation
9
+ * save old passwords for check new passwords
10
+ * captcha support for sign_up, sign_in, recover an unlock
11
+
5
12
  == Installation
6
13
  add to Gemfile
7
14
  gem 'devise_security_extension'
@@ -10,7 +17,7 @@ after bundle execute
10
17
  rails g devise_security_extension:install
11
18
 
12
19
  for :secure_validatable you need to add
13
- gem 'rails_email_validator'
20
+ gem 'rails_email_validator'
14
21
 
15
22
  == Configuration
16
23
 
@@ -27,11 +34,37 @@ for :secure_validatable you need to add
27
34
  # Deny old password (true, false, count)
28
35
  # config.deny_old_passwords = true
29
36
 
37
+ # captcha integration for recover form
38
+ # config.captcha_for_recover = true
39
+
40
+ # captcha integration for sign up form
41
+ # config.captcha_for_sign_up = true
42
+
43
+ # captcha integration for sign in form
44
+ # config.captcha_for_sign_in = true
45
+
46
+ # captcha integration for unlock form
47
+ # config.captcha_for_unlock = true
48
+
49
+ == Captcha-Support
50
+
51
+ === Installation
52
+
53
+ 1. add to Gemfile "gem 'easy_captcha'"
54
+ 2. install easy_captcha "rails g easy_captcha:install"
55
+ 3. enable captcha - see "Configuration"
56
+ 4. add captcha source in views of devise for each controller you have activate
57
+
58
+ <p><%= captcha_tag %></p>
59
+ <p><%= text_field_tag :captcha %></p>
60
+
61
+ That's all!
62
+
30
63
  == Model modules
31
64
 
32
- * :password_expirable - activate that passwords will expire
33
- * :secure_validatable - better way to validate model. don't use with :validatable!!!
34
- * :password_archivable - save password in old_passwords for history checks
65
+ * :password_expirable - activate that passwords will expire
66
+ * :secure_validatable - better way to validate model. don't use with :validatable!!!
67
+ * :password_archivable - save password in old_passwords for history checks
35
68
 
36
69
  == Schema
37
70
 
@@ -53,23 +86,15 @@ for :secure_validatable you need to add
53
86
  * devise (https://github.com/plataformatec/devise)
54
87
  * Rails 3 (http://github.com/rails/rails)
55
88
 
56
- == Features
57
-
58
- * expire passwords (update password with current password)
59
- * strong password validation
60
- * save old passwords for check new passwords
61
-
62
89
  == Todo
63
90
 
64
- * easy_captcha for registration
65
- * easy_captcha for password forgotten
66
- * easy_captcha for unlock instructions
67
- * disable inactive users after time
91
+ * disable inactive users after time
68
92
 
69
93
  == History
70
- * 0.1 expire passwords
71
- * 0.2 strong password validation
72
- * 0.3 password archivable with validation
94
+ * 0.1 expire passwords
95
+ * 0.2 strong password validation
96
+ * 0.3 password archivable with validation
97
+ * 0.4 captcha support for sign_up, sign_in, recover an unlock
73
98
 
74
99
  == Maintainers
75
100
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.6
1
+ 0.4.0
@@ -1,9 +1,10 @@
1
1
  de:
2
2
  errors:
3
3
  messages:
4
- taken_in_past: wurde bereits in der Vergangenheit verwendet!
5
- equal_to_current_password: darf nicht dem aktuellen Passwort entsprechen!
4
+ taken_in_past: "wurde bereits in der Vergangenheit verwendet!"
5
+ equal_to_current_password: "darf nicht dem aktuellen Passwort entsprechen!"
6
6
  devise:
7
+ invalid_captcha: "Die Captchaeingabe ist nicht gültig!"
7
8
  password_expired:
8
9
  updated: "Das neue Passwort wurde übernommen."
9
- change_required: Ihr Passwort ist abgelaufen. Bitte vergeben sie ein neues Passwort!
10
+ change_required: "Ihr Passwort ist abgelaufen. Bitte vergeben sie ein neues Passwort!"
@@ -1,9 +1,10 @@
1
1
  en:
2
2
  errors:
3
3
  messages:
4
- taken_in_past: was already taken in the past!
5
- equal_to_current_password: must be different to the current password!
4
+ taken_in_past: "was already taken in the past!"
5
+ equal_to_current_password: "must be different to the current password!"
6
6
  devise:
7
+ invalid_captcha: "The captcha input is not valid!"
7
8
  password_expired:
8
- updated: Your new password is saved.
9
- change_required: Your password is expired. Please renew your password!
9
+ updated: "Your new password is saved."
10
+ change_required: "Your password is expired. Please renew your password!"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{devise_security_extension}
8
- s.version = "0.3.6"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marco Scholl"]
12
- s.date = %q{2011-06-06}
12
+ s.date = %q{2011-06-07}
13
13
  s.description = %q{a gem for extend devise for more password security}
14
14
  s.email = %q{team@phatworx.de}
15
15
  s.extra_rdoc_files = [
@@ -37,6 +37,8 @@ Gem::Specification.new do |s|
37
37
  "lib/devise_security_extension/models/password_expirable.rb",
38
38
  "lib/devise_security_extension/models/secure_validatable.rb",
39
39
  "lib/devise_security_extension/orm/active_record.rb",
40
+ "lib/devise_security_extension/patches.rb",
41
+ "lib/devise_security_extension/patches/controller_captcha.rb",
40
42
  "lib/devise_security_extension/rails.rb",
41
43
  "lib/devise_security_extension/routes.rb",
42
44
  "lib/devise_security_extension/schema.rb",
@@ -58,24 +60,27 @@ Gem::Specification.new do |s|
58
60
  s.specification_version = 3
59
61
 
60
62
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
61
- s.add_runtime_dependency(%q<rails>, [">= 0"])
63
+ s.add_runtime_dependency(%q<rails>, ["~> 3.0.0"])
62
64
  s.add_runtime_dependency(%q<devise>, [">= 0"])
63
- s.add_runtime_dependency(%q<rails_email_validator>, [">= 0"])
65
+ s.add_development_dependency(%q<rails_email_validator>, [">= 0"])
66
+ s.add_development_dependency(%q<easy_captcha>, [">= 0"])
64
67
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
65
68
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
66
69
  s.add_development_dependency(%q<rcov>, [">= 0"])
67
70
  else
68
- s.add_dependency(%q<rails>, [">= 0"])
71
+ s.add_dependency(%q<rails>, ["~> 3.0.0"])
69
72
  s.add_dependency(%q<devise>, [">= 0"])
70
73
  s.add_dependency(%q<rails_email_validator>, [">= 0"])
74
+ s.add_dependency(%q<easy_captcha>, [">= 0"])
71
75
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
76
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
73
77
  s.add_dependency(%q<rcov>, [">= 0"])
74
78
  end
75
79
  else
76
- s.add_dependency(%q<rails>, [">= 0"])
80
+ s.add_dependency(%q<rails>, ["~> 3.0.0"])
77
81
  s.add_dependency(%q<devise>, [">= 0"])
78
82
  s.add_dependency(%q<rails_email_validator>, [">= 0"])
83
+ s.add_dependency(%q<easy_captcha>, [">= 0"])
79
84
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
80
85
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
81
86
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -5,7 +5,7 @@ require 'active_support/ordered_hash'
5
5
  require 'active_support/concern'
6
6
  require 'devise'
7
7
 
8
- module Devise # :nodoc:
8
+ module Devise # :nodoc:
9
9
 
10
10
  # Should the password expire (e.g 3.months)
11
11
  mattr_accessor :expire_password_after
@@ -22,22 +22,48 @@ module Devise # :nodoc:
22
22
  # Deny old password (true, false, count)
23
23
  mattr_accessor :deny_old_passwords
24
24
  @@deny_old_passwords = true
25
+
26
+ # enable email validation for :secure_validatable. (true, false, validation_options)
27
+ # dependency: need an email validator like rails_email_validator
28
+ mattr_accessor :email_validation
29
+ @@email_validation = true
30
+
31
+ # captcha integration for recover form
32
+ mattr_accessor :captcha_for_recover
33
+ @@captcha_for_recover = false
34
+
35
+ # captcha integration for sign up form
36
+ mattr_accessor :captcha_for_sign_up
37
+ @@captcha_for_sign_up = false
38
+
39
+ # captcha integration for sign in form
40
+ mattr_accessor :captcha_for_sign_in
41
+ @@captcha_for_sign_in = false
42
+
43
+ # captcha integration for unlock form
44
+ mattr_accessor :captcha_for_unlock
45
+ @@captcha_for_unlock = false
46
+
25
47
  end
26
48
 
27
49
  # an security extension for devise
28
50
  module DeviseSecurityExtension
29
51
  autoload :Schema, 'devise_security_extension/schema'
52
+ autoload :Patches, 'devise_security_extension/patches'
30
53
 
31
54
  module Controllers # :nodoc:
32
55
  autoload :Helpers, 'devise_security_extension/controllers/helpers'
33
56
  end
34
57
  end
35
58
 
59
+ # modules
36
60
  Devise.add_module :password_expirable, :controller => :password_expirable, :model => 'devise_security_extension/models/password_expirable', :route => :password_expired
37
61
  Devise.add_module :secure_validatable, :model => 'devise_security_extension/models/secure_validatable'
38
62
  Devise.add_module :password_archivable, :model => 'devise_security_extension/models/password_archivable'
39
63
 
64
+ # requires
40
65
  require 'devise_security_extension/routes'
41
66
  require 'devise_security_extension/rails'
42
67
  require 'devise_security_extension/orm/active_record'
43
68
  require 'devise_security_extension/models/old_password'
69
+
@@ -6,7 +6,23 @@ module DeviseSecurityExtension
6
6
  included do
7
7
  before_filter :handle_password_change
8
8
  end
9
+
10
+ module ClassMethods
11
+ # helper for captcha
12
+ def init_recover_password_captcha
13
+ p "init"
14
+ p self.inspect
15
+
16
+ include RecoverPasswordCaptcha
17
+ end
18
+ end
9
19
 
20
+ module RecoverPasswordCaptcha
21
+ def new
22
+ p "Check here captcha"
23
+ super
24
+ end
25
+ end
10
26
 
11
27
  # controller instance methods
12
28
  module InstanceMethods
@@ -11,7 +11,6 @@ module Devise
11
11
  # * +password_regex+: need strong password. Defaults to /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/
12
12
  #
13
13
  module SecureValidatable
14
-
15
14
  def self.included(base)
16
15
  base.extend ClassMethods
17
16
  assert_secure_validations_api!(base)
@@ -23,8 +22,8 @@ module Devise
23
22
 
24
23
  # validates email
25
24
  validates :email, :presence => true, :if => :email_required?
26
- validates :email, :email => true # use rails_email_validator
27
-
25
+ validates :email, :email => email_validation if email_validation # use rails_email_validator or similar
26
+
28
27
  # validates password
29
28
  validates :password, :presence => true, :length => password_length, :format => password_regex, :confirmation => true, :if => :password_required?
30
29
 
@@ -39,10 +38,10 @@ module Devise
39
38
 
40
39
  def current_equal_password_validation
41
40
  if not self.new_record? and not self.encrypted_password_change.nil?
42
- dummy = self.class.new
43
- dummy.encrypted_password = self.encrypted_password_change.first
44
- dummy.password_salt = self.password_salt_change.first if self.respond_to? :password_salt_change and not self.password_salt_change.nil?
45
- self.errors.add(:password, :equal_to_current_password) if dummy.valid_password?(self.password)
41
+ dummy = self.class.new
42
+ dummy.encrypted_password = self.encrypted_password_change.first
43
+ dummy.password_salt = self.password_salt_change.first if self.respond_to? :password_salt_change and not self.password_salt_change.nil?
44
+ self.errors.add(:password, :equal_to_current_password) if dummy.valid_password?(self.password)
46
45
  end
47
46
  end
48
47
 
@@ -60,7 +59,7 @@ module Devise
60
59
  end
61
60
 
62
61
  module ClassMethods
63
- Devise::Models.config(self, :password_regex, :password_length)
62
+ Devise::Models.config(self, :password_regex, :password_length, :email_validation)
64
63
  end
65
64
  end
66
65
  end
@@ -0,0 +1,14 @@
1
+ module DeviseSecurityExtension
2
+ module Patches
3
+ autoload :ControllerCaptcha, 'devise_security_extension/patches/controller_captcha'
4
+
5
+ class << self
6
+ def apply
7
+ Devise::PasswordsController.send(:include, Patches::ControllerCaptcha) if Devise.captcha_for_recover
8
+ Devise::UnlocksController.send(:include, Patches::ControllerCaptcha) if Devise.captcha_for_unlock
9
+ Devise::RegistrationsController.send(:include, Patches::ControllerCaptcha) if Devise.captcha_for_sign_up
10
+ Devise::SessionsController.send(:include, Patches::ControllerCaptcha) if Devise.captcha_for_sign_in
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ module DeviseSecurityExtension::Patches
2
+ # patch passwords controller for captcha
3
+ module ControllerCaptcha
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ # here the patch
7
+
8
+ alias_method :create_without_captcha_check, :create
9
+ define_method :create do
10
+ if valid_captcha? params[:captcha]
11
+ create_without_captcha_check
12
+ else
13
+ build_resource
14
+ clean_up_passwords(resource)
15
+ flash[:alert] = I18n.translate('devise.invalid_captcha')
16
+ render_with_scope :new
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -3,5 +3,10 @@ module DeviseSecurityExtension
3
3
  ActiveSupport.on_load(:action_controller) do
4
4
  include DeviseSecurityExtension::Controllers::Helpers
5
5
  end
6
+
7
+ ActionDispatch::Callbacks.to_prepare do
8
+ DeviseSecurityExtension::Patches.apply
9
+ end
10
+
6
11
  end
7
12
  end
@@ -15,7 +15,10 @@ module DeviseSecurityExtension
15
15
  " # How often save old passwords in archive\n" +
16
16
  " # config.password_archiving_count = 5\n\n" +
17
17
  " # Deny old password (true, false, count)\n" +
18
- " # config.deny_old_passwords = true" +
18
+ " # config.deny_old_passwords = true\n\n" +
19
+ " # enable email validation for :secure_validatable. (true, false, validation_options)\n" +
20
+ " # dependency: need an email validator like rails_email_validator\n" +
21
+ " # config.email_validation = true" +
19
22
  "\n", :before => /end[ |\n|]+\Z/
20
23
  end
21
24
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_security_extension
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,23 +9,23 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-06 00:00:00.000000000 +02:00
12
+ date: 2011-06-07 00:00:00.000000000 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &24659860 !ruby/object:Gem::Requirement
17
+ requirement: &26315300 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: '0'
22
+ version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *24659860
25
+ version_requirements: *26315300
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: devise
28
- requirement: &24659380 !ruby/object:Gem::Requirement
28
+ requirement: &26314820 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,21 +33,32 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *24659380
36
+ version_requirements: *26314820
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rails_email_validator
39
- requirement: &24658900 !ruby/object:Gem::Requirement
39
+ requirement: &26314340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
43
43
  - !ruby/object:Gem::Version
44
44
  version: '0'
45
- type: :runtime
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *26314340
48
+ - !ruby/object:Gem::Dependency
49
+ name: easy_captcha
50
+ requirement: &26313860 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
46
57
  prerelease: false
47
- version_requirements: *24658900
58
+ version_requirements: *26313860
48
59
  - !ruby/object:Gem::Dependency
49
60
  name: bundler
50
- requirement: &24658420 !ruby/object:Gem::Requirement
61
+ requirement: &26313380 !ruby/object:Gem::Requirement
51
62
  none: false
52
63
  requirements:
53
64
  - - ~>
@@ -55,10 +66,10 @@ dependencies:
55
66
  version: 1.0.0
56
67
  type: :development
57
68
  prerelease: false
58
- version_requirements: *24658420
69
+ version_requirements: *26313380
59
70
  - !ruby/object:Gem::Dependency
60
71
  name: jeweler
61
- requirement: &24657940 !ruby/object:Gem::Requirement
72
+ requirement: &26312900 !ruby/object:Gem::Requirement
62
73
  none: false
63
74
  requirements:
64
75
  - - ~>
@@ -66,10 +77,10 @@ dependencies:
66
77
  version: 1.5.2
67
78
  type: :development
68
79
  prerelease: false
69
- version_requirements: *24657940
80
+ version_requirements: *26312900
70
81
  - !ruby/object:Gem::Dependency
71
82
  name: rcov
72
- requirement: &24657460 !ruby/object:Gem::Requirement
83
+ requirement: &26312420 !ruby/object:Gem::Requirement
73
84
  none: false
74
85
  requirements:
75
86
  - - ! '>='
@@ -77,7 +88,7 @@ dependencies:
77
88
  version: '0'
78
89
  type: :development
79
90
  prerelease: false
80
- version_requirements: *24657460
91
+ version_requirements: *26312420
81
92
  description: a gem for extend devise for more password security
82
93
  email: team@phatworx.de
83
94
  executables: []
@@ -106,6 +117,8 @@ files:
106
117
  - lib/devise_security_extension/models/password_expirable.rb
107
118
  - lib/devise_security_extension/models/secure_validatable.rb
108
119
  - lib/devise_security_extension/orm/active_record.rb
120
+ - lib/devise_security_extension/patches.rb
121
+ - lib/devise_security_extension/patches/controller_captcha.rb
109
122
  - lib/devise_security_extension/rails.rb
110
123
  - lib/devise_security_extension/routes.rb
111
124
  - lib/devise_security_extension/schema.rb
@@ -128,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
141
  version: '0'
129
142
  segments:
130
143
  - 0
131
- hash: 669408536488345234
144
+ hash: 1577265530715182103
132
145
  required_rubygems_version: !ruby/object:Gem::Requirement
133
146
  none: false
134
147
  requirements: