devise-secure_password 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +6 -0
  3. data/Gemfile.lock +8 -8
  4. data/README.md +2 -2
  5. data/app/controllers/devise/passwords_with_policy_controller.rb +2 -4
  6. data/gemfiles/{rails-5_0_6.gemfile → rails-5_0.gemfile} +1 -1
  7. data/gemfiles/{rails-5_1_4.gemfile → rails-5_1.gemfile} +1 -1
  8. data/gemfiles/{rails-5_1_4.gemfile.lock → rails-5_1.gemfile.lock} +8 -8
  9. data/lib/devise/secure_password.rb +2 -2
  10. data/lib/devise/secure_password/controllers/devise_helpers.rb +4 -48
  11. data/lib/devise/secure_password/controllers/helpers.rb +53 -0
  12. data/lib/devise/secure_password/models/password_requires_regular_updates.rb +0 -2
  13. data/lib/devise/secure_password/version.rb +1 -1
  14. data/pkg/devise-secure_password-1.0.7.gem +0 -0
  15. metadata +8 -38
  16. data/coverage/assets/0.10.2/application.css +0 -799
  17. data/coverage/assets/0.10.2/application.js +0 -1707
  18. data/coverage/assets/0.10.2/colorbox/border.png +0 -0
  19. data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  20. data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  21. data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  22. data/coverage/assets/0.10.2/favicon_green.png +0 -0
  23. data/coverage/assets/0.10.2/favicon_red.png +0 -0
  24. data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  25. data/coverage/assets/0.10.2/loading.gif +0 -0
  26. data/coverage/assets/0.10.2/magnify.png +0 -0
  27. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  28. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  29. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  30. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  31. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  32. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  33. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  34. data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  35. data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  36. data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  37. data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  38. data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  39. data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  40. data/coverage/index.html +0 -4115
  41. data/devise-secure_password-1.0.0.gem +0 -0
  42. data/gemfiles/rails-5_0_6.gemfile.lock +0 -286
  43. data/lib/devise/secure_password/controllers/active_helpers.rb +0 -45
  44. data/lib/devise/secure_password/hooks/password_requires_regular_updates.rb +0 -5
  45. data/pkg/devise-secure_password-1.0.3.gem +0 -0
  46. data/pkg/devise-secure_password-1.0.4.gem +0 -0
  47. data/pkg/devise-secure_password-1.0.5.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 537cd336906fbda7eca3ea27bec51cb3198394c3
4
- data.tar.gz: 7aeb869fd6060a7c85479d17ef8939329bda484f
3
+ metadata.gz: 7d48b94f72dec051554ab4176e23b7509e77674c
4
+ data.tar.gz: 73bba702c406149b9a0ea5356c55bcd6da0d63ba
5
5
  SHA512:
6
- metadata.gz: 5ad811d3b36cae428e2461087445bab6fd337298d0292b82ec2caa33d98e1377f1eb09a6379f32d1863fdd6c48b088417b6ecd8ba2ba665f8edc5a099e435d9b
7
- data.tar.gz: 4b4c9c7b91c9489b3ee347903226bbdda54ff56dff82d2a060442a7f3088ff1819e2f46043c01c3fae0352f13d50c95656cbff7de74f27d62326f8c095467a23
6
+ metadata.gz: cae5af852eb447a67736844354bc34c7857d041075c25e32ee1e8177e047bffc0b10d11746dbf3a834f45357663781a70eb64922a53eb0ca302726508950468c
7
+ data.tar.gz: 8c60f1e2df9ea2d686d8ce48d5cc0a9206e6d3dd83c1a6703bf74b0242dc5112f49c39154b5b9556d61dbf15d4da90b68b15f554a7a9baeb2f3c447cf32c2111
data/Changelog.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog: devise-secure_password
2
2
 
3
+ ## 1.0.7 / 2018-05-25
4
+
5
+ * Fix specs to use appropriate Rails version
6
+ * Update configuration to not include patch version for Rails
7
+ * Manage expiration in session to remove incompatability with authentication extensions
8
+
3
9
  ## 1.0.6 / 2018-05-04
4
10
 
5
11
  * Fix scoping for previous passwords returned through associations.
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- devise-secure_password (1.0.6)
12
+ devise-secure_password (1.0.7)
13
13
  devise (>= 4.0.0, < 5.0.0)
14
14
  railties (>= 5.0.0, < 6.0.0)
15
15
 
@@ -62,7 +62,7 @@ GEM
62
62
  ansi (1.5.0)
63
63
  arel (9.0.0)
64
64
  ast (2.4.0)
65
- bcrypt (3.1.11)
65
+ bcrypt (3.1.12)
66
66
  builder (3.2.3)
67
67
  capybara (2.18.0)
68
68
  addressable
@@ -71,7 +71,7 @@ GEM
71
71
  rack (>= 1.0.0)
72
72
  rack-test (>= 0.5.4)
73
73
  xpath (>= 2.0, < 4.0)
74
- capybara-screenshot (1.0.19)
74
+ capybara-screenshot (1.0.21)
75
75
  capybara (>= 1.0, < 4)
76
76
  launchy
77
77
  childprocess (0.9.0)
@@ -98,7 +98,7 @@ GEM
98
98
  erubis (2.7.0)
99
99
  execjs (2.7.0)
100
100
  ffi (1.9.23)
101
- flay (2.11.0)
101
+ flay (2.12.0)
102
102
  erubis (~> 2.7.0)
103
103
  path_expander (~> 1.0)
104
104
  ruby_parser (~> 3.0)
@@ -124,7 +124,7 @@ GEM
124
124
  mini_mime (1.0.0)
125
125
  mini_portile2 (2.3.0)
126
126
  minitest (5.11.3)
127
- nio4r (2.3.0)
127
+ nio4r (2.3.1)
128
128
  nokogiri (1.8.2)
129
129
  mini_portile2 (~> 2.3.0)
130
130
  orm_adapter (0.5.0)
@@ -193,7 +193,7 @@ GEM
193
193
  rspec-support (3.7.1)
194
194
  rspec_junit_formatter (0.3.0)
195
195
  rspec-core (>= 2, < 4, != 2.12.0)
196
- rubocop (0.55.0)
196
+ rubocop (0.56.0)
197
197
  parallel (~> 1.10)
198
198
  parser (>= 2.5)
199
199
  powerpack (~> 0.1)
@@ -218,7 +218,7 @@ GEM
218
218
  sprockets (>= 2.8, < 4.0)
219
219
  sprockets-rails (>= 2.0, < 4.0)
220
220
  tilt (>= 1.1, < 3)
221
- selenium-webdriver (3.11.0)
221
+ selenium-webdriver (3.12.0)
222
222
  childprocess (~> 0.5)
223
223
  rubyzip (~> 1.2)
224
224
  sexp_processor (4.11.0)
@@ -285,4 +285,4 @@ DEPENDENCIES
285
285
  therubyracer (~> 0.12.3)
286
286
 
287
287
  BUNDLED WITH
288
- 1.16.1
288
+ 1.16.2
data/README.md CHANGED
@@ -9,7 +9,7 @@ as well.
9
9
 
10
10
  ## Build Status
11
11
 
12
- | Service | rails 5.1.4 |
12
+ | Service | rails 5.1 |
13
13
  |:-----------|:-----------:|
14
14
  | Circle CI | [![Circle CI](https://circleci.com/gh/ValiMail/devise-secure_password/tree/master.svg?style=shield&circle-token=cd173d5f9d2944a9b14737c2d4339b20b08565cf)]() |
15
15
 
@@ -228,7 +228,7 @@ To determine the Ruby on Rails versions supported by this release, run the follo
228
228
  prompt> gem install flay ruby2ruby rubocop rspec
229
229
  prompt> rake test:spec:targets
230
230
 
231
- Available Rails targets: 5.0.6, 5.1.4
231
+ Available Rails targets: 5.0, 5.1
232
232
  ```
233
233
 
234
234
  Reconfigure the project by specifying the correct Gemfile when running bundler, followed by running tests:
@@ -4,9 +4,7 @@ module Devise
4
4
 
5
5
  def edit
6
6
  self.resource = resource_class.new
7
- if warden.session(scope_name)['secure_password_expired']
8
- resource.errors.add(:base, "#{error_string_for_password_expired}.")
9
- end
7
+ resource.errors.add(:base, "#{error_string_for_password_expired}.")
10
8
  render :edit
11
9
  end
12
10
 
@@ -44,7 +42,7 @@ module Devise
44
42
  end
45
43
 
46
44
  def prepare_for_redirect
47
- warden.session(scope_name)[:secure_password_expired] = false
45
+ unset_devise_secure_password_expired!
48
46
  flash[:notice] = alert_string_for_password_updated
49
47
  bypass_sign_in resource, scope: scope_name
50
48
  end
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
- ENV['RAILS_TARGET'] ||= '5.0.6'
5
+ ENV['RAILS_TARGET'] ||= '5.0'
6
6
 
7
7
  gemspec path: '../'
8
8
 
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
- ENV['RAILS_TARGET'] ||= '5.1.4'
5
+ ENV['RAILS_TARGET'] ||= '5.1'
6
6
 
7
7
  gemspec path: '../'
8
8
 
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: ..
11
11
  specs:
12
- devise-secure_password (1.0.5)
12
+ devise-secure_password (1.0.6)
13
13
  devise (>= 4.0.0, < 5.0.0)
14
14
  railties (>= 5.0.0, < 6.0.0)
15
15
 
@@ -58,7 +58,7 @@ GEM
58
58
  ansi (1.5.0)
59
59
  arel (8.0.0)
60
60
  ast (2.4.0)
61
- bcrypt (3.1.11)
61
+ bcrypt (3.1.12)
62
62
  builder (3.2.3)
63
63
  byebug (10.0.2)
64
64
  capybara (2.18.0)
@@ -68,7 +68,7 @@ GEM
68
68
  rack (>= 1.0.0)
69
69
  rack-test (>= 0.5.4)
70
70
  xpath (>= 2.0, < 4.0)
71
- capybara-screenshot (1.0.19)
71
+ capybara-screenshot (1.0.21)
72
72
  capybara (>= 1.0, < 4)
73
73
  launchy
74
74
  childprocess (0.9.0)
@@ -95,7 +95,7 @@ GEM
95
95
  erubis (2.7.0)
96
96
  execjs (2.7.0)
97
97
  ffi (1.9.23)
98
- flay (2.11.0)
98
+ flay (2.12.0)
99
99
  erubis (~> 2.7.0)
100
100
  path_expander (~> 1.0)
101
101
  ruby_parser (~> 3.0)
@@ -118,7 +118,7 @@ GEM
118
118
  mini_mime (1.0.0)
119
119
  mini_portile2 (2.3.0)
120
120
  minitest (5.11.3)
121
- nio4r (2.3.0)
121
+ nio4r (2.3.1)
122
122
  nokogiri (1.8.2)
123
123
  mini_portile2 (~> 2.3.0)
124
124
  orm_adapter (0.5.0)
@@ -186,7 +186,7 @@ GEM
186
186
  rspec-support (3.7.1)
187
187
  rspec_junit_formatter (0.3.0)
188
188
  rspec-core (>= 2, < 4, != 2.12.0)
189
- rubocop (0.55.0)
189
+ rubocop (0.56.0)
190
190
  parallel (~> 1.10)
191
191
  parser (>= 2.5)
192
192
  powerpack (~> 0.1)
@@ -211,7 +211,7 @@ GEM
211
211
  sprockets (>= 2.8, < 4.0)
212
212
  sprockets-rails (>= 2.0, < 4.0)
213
213
  tilt (>= 1.1, < 3)
214
- selenium-webdriver (3.11.0)
214
+ selenium-webdriver (3.12.0)
215
215
  childprocess (~> 0.5)
216
216
  rubyzip (~> 1.2)
217
217
  sexp_processor (4.11.0)
@@ -279,4 +279,4 @@ DEPENDENCIES
279
279
  therubyracer (~> 0.12.3)
280
280
 
281
281
  BUNDLED WITH
282
- 1.16.1
282
+ 1.16.2
@@ -38,8 +38,8 @@ module Devise
38
38
 
39
39
  module SecurePassword
40
40
  module Controllers
41
+ autoload :Helpers, 'devise/secure_password/controllers/helpers'
41
42
  autoload :DeviseHelpers, 'devise/secure_password/controllers/devise_helpers'
42
- autoload :ActiveHelpers, 'devise/secure_password/controllers/active_helpers'
43
43
  end
44
44
 
45
45
  class Engine < ::Rails::Engine
@@ -49,7 +49,7 @@ module Devise
49
49
  end
50
50
  ActiveSupport.on_load(:action_controller) do
51
51
  include ActionView::Helpers::DateHelper
52
- include Devise::SecurePassword::Controllers::ActiveHelpers
52
+ include Devise::SecurePassword::Controllers::Helpers
53
53
  end
54
54
 
55
55
  # add exceptions to the inflector so it doesn't get tripped up by our concerns that end in an 's'
@@ -6,58 +6,14 @@ module Devise
6
6
 
7
7
  # rubocop:disable Style/ClassAndModuleChildren
8
8
  class ::DeviseController
9
- alias old_require_no_authentication require_no_authentication
9
+ alias devise_sign_in sign_in
10
10
 
11
11
  protected
12
12
 
13
- # Override the devise require_no_authentication before callback to
14
- # prevent authenticated users with expired passwords from escaping to
15
- # other pages without first updating their passwords.
16
- def require_no_authentication
17
- return if check_password_expired_and_redirect!
18
-
19
- old_require_no_authentication
20
- end
21
-
22
- # Store the name of the current controller and action in the warden
23
- # session store then redirect if signed in and password expired. The
24
- # stored values will be used by non-devise controllers to prevent a
25
- # user from escaping the change password process.
26
- def check_password_expired_and_redirect!
27
- assert_is_devise_resource!
28
-
29
- return if skip_current_devise_controller?
30
-
31
- if signed_in?(scope_name) && warden.session(scope_name)[:secure_password_expired]
32
- save_controller_state
33
- redirect_to edit_user_password_with_policy_url, alert: "#{error_string_for_password_expired}."
34
- return true
13
+ def sign_in(*args)
14
+ devise_sign_in(*args).tap do
15
+ set_devise_secure_password_expired! if warden_user_has_password_expiration?
35
16
  end
36
-
37
- false
38
- end
39
-
40
- def save_controller_state
41
- warden.session(scope_name)[:secure_last_controller] = self.class.name
42
- warden.session(scope_name)[:secure_last_action] = action_name
43
- end
44
-
45
- # Prevent infinite loops and allow specified controllers to bypass.
46
- # @NOTE: The ability to extend this list may be made public, in the
47
- # future if that functionality is needed.
48
- def skip_current_devise_controller?
49
- exclusion_list = [
50
- 'Devise::SessionsController'
51
- ]
52
- !(exclusion_list.include?("#{self.class.name}#" + action_name) || (exclusion_list & self.class.ancestors.map(&:to_s)).any?)
53
- end
54
-
55
- def error_string_for_password_expired
56
- class_obj = scope_name.to_s.camelize.constantize
57
- I18n.t(
58
- 'secure_password.password_requires_regular_updates.errors.messages.password_expired',
59
- timeframe: distance_of_time_in_words(class_obj.password_maximum_age)
60
- )
61
17
  end
62
18
  end
63
19
  # rubocop:enable Style/ClassAndModuleChildren
@@ -0,0 +1,53 @@
1
+ module Devise
2
+ module SecurePassword
3
+ module Controllers
4
+ module Helpers
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ before_action :authenticate_secure_password!, unless: :devise_controller?
9
+ end
10
+
11
+ def authenticate_secure_password_expired?
12
+ return false if devise_controller?
13
+ session[:devise_secure_password_expired] == true
14
+ end
15
+
16
+ def authenticate_secure_password!
17
+ return unless authenticate_secure_password_expired?
18
+ redirect_to authenticate_secure_password_path, alert: "#{error_string_for_password_expired}."
19
+ end
20
+
21
+ def authenticate_secure_password_path
22
+ return unless warden.user
23
+ :"edit_#{devise_secure_password_scope}_password_with_policy"
24
+ end
25
+
26
+ private
27
+
28
+ def devise_secure_password_scope
29
+ Devise::Mapping.find_scope!(warden.user)
30
+ end
31
+
32
+ def error_string_for_password_expired
33
+ I18n.t(
34
+ 'secure_password.password_requires_regular_updates.errors.messages.password_expired',
35
+ timeframe: distance_of_time_in_words(warden.user.class.password_maximum_age)
36
+ )
37
+ end
38
+
39
+ def set_devise_secure_password_expired!
40
+ session[:devise_secure_password_expired] = warden.user.password_expired?
41
+ end
42
+
43
+ def unset_devise_secure_password_expired!
44
+ session.delete(:devise_secure_password_expired)
45
+ end
46
+
47
+ def warden_user_has_password_expiration?
48
+ warden&.user&.respond_to?(:password_expired?)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -3,8 +3,6 @@ module Devise
3
3
  module PasswordRequiresRegularUpdates
4
4
  extend ActiveSupport::Concern
5
5
 
6
- require 'devise/secure_password/hooks/password_requires_regular_updates'
7
-
8
6
  class ConfigurationError < RuntimeError; end
9
7
 
10
8
  included do
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module SecurePassword
3
- VERSION = '1.0.6'.freeze
3
+ VERSION = '1.0.7'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-secure_password
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Eissler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-04 00:00:00.000000000 Z
11
+ date: 2018-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
@@ -425,42 +425,14 @@ files:
425
425
  - "./bin/console"
426
426
  - "./bin/setup"
427
427
  - "./config/locales/en.yml"
428
- - "./coverage/assets/0.10.2/application.css"
429
- - "./coverage/assets/0.10.2/application.js"
430
- - "./coverage/assets/0.10.2/colorbox/border.png"
431
- - "./coverage/assets/0.10.2/colorbox/controls.png"
432
- - "./coverage/assets/0.10.2/colorbox/loading.gif"
433
- - "./coverage/assets/0.10.2/colorbox/loading_background.png"
434
- - "./coverage/assets/0.10.2/favicon_green.png"
435
- - "./coverage/assets/0.10.2/favicon_red.png"
436
- - "./coverage/assets/0.10.2/favicon_yellow.png"
437
- - "./coverage/assets/0.10.2/loading.gif"
438
- - "./coverage/assets/0.10.2/magnify.png"
439
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png"
440
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png"
441
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png"
442
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png"
443
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png"
444
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png"
445
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png"
446
- - "./coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
447
- - "./coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png"
448
- - "./coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png"
449
- - "./coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png"
450
- - "./coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png"
451
- - "./coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png"
452
- - "./coverage/index.html"
453
- - "./devise-secure_password-1.0.0.gem"
454
428
  - "./devise-secure_password.gemspec"
455
429
  - "./docker-entrypoint.sh"
456
- - "./gemfiles/rails-5_0_6.gemfile"
457
- - "./gemfiles/rails-5_0_6.gemfile.lock"
458
- - "./gemfiles/rails-5_1_4.gemfile"
459
- - "./gemfiles/rails-5_1_4.gemfile.lock"
430
+ - "./gemfiles/rails-5_0.gemfile"
431
+ - "./gemfiles/rails-5_1.gemfile"
432
+ - "./gemfiles/rails-5_1.gemfile.lock"
460
433
  - "./lib/devise/secure_password.rb"
461
- - "./lib/devise/secure_password/controllers/active_helpers.rb"
462
434
  - "./lib/devise/secure_password/controllers/devise_helpers.rb"
463
- - "./lib/devise/secure_password/hooks/password_requires_regular_updates.rb"
435
+ - "./lib/devise/secure_password/controllers/helpers.rb"
464
436
  - "./lib/devise/secure_password/models/password_disallows_frequent_changes.rb"
465
437
  - "./lib/devise/secure_password/models/password_disallows_frequent_reuse.rb"
466
438
  - "./lib/devise/secure_password/models/password_has_required_content.rb"
@@ -472,9 +444,7 @@ files:
472
444
  - "./lib/generators/devise/templates/README.txt"
473
445
  - "./lib/generators/devise/templates/secure_password.rb"
474
446
  - "./lib/support/string/character_counter.rb"
475
- - "./pkg/devise-secure_password-1.0.3.gem"
476
- - "./pkg/devise-secure_password-1.0.4.gem"
477
- - "./pkg/devise-secure_password-1.0.5.gem"
447
+ - "./pkg/devise-secure_password-1.0.7.gem"
478
448
  homepage: https://github.com/valimail/devise-secure_password
479
449
  licenses:
480
450
  - MIT
@@ -495,7 +465,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
495
465
  version: '0'
496
466
  requirements: []
497
467
  rubyforge_project:
498
- rubygems_version: 2.6.14
468
+ rubygems_version: 2.6.14.1
499
469
  signing_key:
500
470
  specification_version: 4
501
471
  summary: A devise password policy enforcement extension.