devise-security 0.12.0 → 0.18.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.
Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +3 -1
  3. data/README.md +199 -65
  4. data/app/controllers/devise/paranoid_verification_code_controller.rb +28 -12
  5. data/app/controllers/devise/password_expired_controller.rb +34 -10
  6. data/app/views/devise/paranoid_verification_code/show.html.erb +4 -4
  7. data/app/views/devise/password_expired/show.html.erb +6 -6
  8. data/config/locales/bg.yml +42 -0
  9. data/config/locales/by.yml +50 -0
  10. data/config/locales/cs.yml +46 -0
  11. data/config/locales/de.yml +33 -7
  12. data/config/locales/en.yml +26 -1
  13. data/config/locales/es.yml +31 -6
  14. data/config/locales/fa.yml +42 -0
  15. data/config/locales/fr.yml +42 -0
  16. data/config/locales/hi.yml +43 -0
  17. data/config/locales/it.yml +36 -4
  18. data/config/locales/ja.yml +42 -0
  19. data/config/locales/nl.yml +42 -0
  20. data/config/locales/pt.yml +42 -0
  21. data/config/locales/ru.yml +50 -0
  22. data/config/locales/tr.yml +42 -0
  23. data/config/locales/uk.yml +50 -0
  24. data/config/locales/zh_CN.yml +42 -0
  25. data/config/locales/zh_TW.yml +42 -0
  26. data/lib/devise-security/controllers/helpers.rb +74 -51
  27. data/lib/devise-security/hooks/expirable.rb +6 -4
  28. data/lib/devise-security/hooks/paranoid_verification.rb +3 -3
  29. data/lib/devise-security/hooks/password_expirable.rb +5 -3
  30. data/lib/devise-security/hooks/session_limitable.rb +31 -14
  31. data/lib/devise-security/models/active_record/old_password.rb +5 -0
  32. data/lib/devise-security/models/compatibility/active_record_patch.rb +41 -0
  33. data/lib/devise-security/models/compatibility/mongoid_patch.rb +32 -0
  34. data/lib/devise-security/models/compatibility.rb +8 -15
  35. data/lib/devise-security/models/database_authenticatable_patch.rb +20 -10
  36. data/lib/devise-security/models/expirable.rb +14 -7
  37. data/lib/devise-security/models/mongoid/old_password.rb +21 -0
  38. data/lib/devise-security/models/paranoid_verification.rb +4 -2
  39. data/lib/devise-security/models/password_archivable.rb +19 -8
  40. data/lib/devise-security/models/password_expirable.rb +103 -48
  41. data/lib/devise-security/models/secure_validatable.rb +69 -12
  42. data/lib/devise-security/models/security_questionable.rb +2 -0
  43. data/lib/devise-security/models/session_limitable.rb +19 -2
  44. data/lib/devise-security/orm/mongoid.rb +7 -0
  45. data/lib/devise-security/patches/controller_captcha.rb +2 -0
  46. data/lib/devise-security/patches/controller_security_question.rb +3 -1
  47. data/lib/devise-security/patches.rb +16 -8
  48. data/lib/devise-security/rails.rb +2 -0
  49. data/lib/devise-security/routes.rb +4 -3
  50. data/lib/devise-security/validators/password_complexity_validator.rb +62 -0
  51. data/lib/devise-security/version.rb +3 -1
  52. data/lib/devise-security.rb +23 -11
  53. data/lib/generators/devise_security/install_generator.rb +6 -6
  54. data/lib/generators/templates/devise_security.rb +52 -0
  55. data/test/{test_captcha_controller.rb → controllers/test_captcha_controller.rb} +2 -0
  56. data/test/controllers/test_paranoid_verification_code_controller.rb +133 -0
  57. data/test/controllers/test_password_expired_controller.rb +164 -0
  58. data/test/controllers/test_security_question_controller.rb +66 -0
  59. data/test/dummy/Rakefile +3 -1
  60. data/test/dummy/app/assets/config/manifest.js +3 -0
  61. data/test/dummy/app/controllers/application_controller.rb +2 -0
  62. data/test/dummy/app/controllers/captcha/sessions_controller.rb +2 -0
  63. data/test/dummy/app/controllers/overrides/paranoid_verification_code_controller.rb +7 -0
  64. data/test/dummy/app/controllers/overrides/password_expired_controller.rb +17 -0
  65. data/test/dummy/app/controllers/security_question/unlocks_controller.rb +2 -0
  66. data/test/dummy/app/controllers/widgets_controller.rb +9 -0
  67. data/test/dummy/app/models/application_record.rb +10 -2
  68. data/test/dummy/app/models/application_user_record.rb +12 -0
  69. data/test/dummy/app/models/captcha_user.rb +7 -2
  70. data/test/dummy/app/models/mongoid/confirmable_fields.rb +15 -0
  71. data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +18 -0
  72. data/test/dummy/app/models/mongoid/expirable_fields.rb +13 -0
  73. data/test/dummy/app/models/mongoid/lockable_fields.rb +15 -0
  74. data/test/dummy/app/models/mongoid/mappings.rb +15 -0
  75. data/test/dummy/app/models/mongoid/omniauthable_fields.rb +13 -0
  76. data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +12 -0
  77. data/test/dummy/app/models/mongoid/password_archivable_fields.rb +11 -0
  78. data/test/dummy/app/models/mongoid/password_expirable_fields.rb +12 -0
  79. data/test/dummy/app/models/mongoid/recoverable_fields.rb +13 -0
  80. data/test/dummy/app/models/mongoid/registerable_fields.rb +21 -0
  81. data/test/dummy/app/models/mongoid/rememberable_fields.rb +12 -0
  82. data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +13 -0
  83. data/test/dummy/app/models/mongoid/security_questionable_fields.rb +15 -0
  84. data/test/dummy/app/models/mongoid/session_limitable_fields.rb +12 -0
  85. data/test/dummy/app/models/mongoid/timeoutable_fields.rb +11 -0
  86. data/test/dummy/app/models/mongoid/trackable_fields.rb +16 -0
  87. data/test/dummy/app/models/mongoid/validatable_fields.rb +9 -0
  88. data/test/dummy/app/models/paranoid_verification_user.rb +26 -0
  89. data/test/dummy/app/models/password_expired_user.rb +26 -0
  90. data/test/dummy/app/models/security_question_user.rb +9 -4
  91. data/test/dummy/app/models/user.rb +16 -1
  92. data/test/dummy/app/models/widget.rb +4 -0
  93. data/test/dummy/app/mongoid/admin.rb +31 -0
  94. data/test/dummy/app/mongoid/one_user.rb +58 -0
  95. data/test/dummy/app/mongoid/shim.rb +25 -0
  96. data/test/dummy/app/mongoid/user_on_engine.rb +41 -0
  97. data/test/dummy/app/mongoid/user_on_main_app.rb +41 -0
  98. data/test/dummy/app/mongoid/user_with_validations.rb +37 -0
  99. data/test/dummy/app/mongoid/user_without_email.rb +38 -0
  100. data/test/dummy/config/application.rb +13 -11
  101. data/test/dummy/config/boot.rb +3 -1
  102. data/test/dummy/config/environment.rb +3 -1
  103. data/test/dummy/config/environments/test.rb +6 -13
  104. data/test/dummy/config/initializers/devise.rb +6 -3
  105. data/test/dummy/config/initializers/migration_class.rb +3 -6
  106. data/test/dummy/config/locales/en.yml +10 -0
  107. data/test/dummy/config/mongoid.yml +6 -0
  108. data/test/dummy/config/routes.rb +8 -3
  109. data/test/dummy/config.ru +3 -1
  110. data/test/dummy/db/migrate/20120508165529_create_tables.rb +17 -6
  111. data/test/dummy/db/migrate/20150402165590_add_verification_columns.rb +2 -0
  112. data/test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb +2 -0
  113. data/test/dummy/db/migrate/20160320162345_add_security_questions_fields.rb +2 -0
  114. data/test/dummy/db/migrate/20180318103603_add_expireable_columns.rb +2 -0
  115. data/test/dummy/db/migrate/20180318105329_add_confirmable_columns.rb +2 -0
  116. data/test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb +2 -0
  117. data/test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb +2 -0
  118. data/test/dummy/db/migrate/20180319114023_add_widget.rb +2 -0
  119. data/test/dummy/lib/shared_expirable_columns.rb +15 -0
  120. data/test/dummy/lib/shared_security_questions_fields.rb +17 -0
  121. data/test/dummy/lib/shared_user.rb +43 -0
  122. data/test/dummy/lib/shared_user_with_password_verification.rb +13 -0
  123. data/test/dummy/lib/shared_user_without_omniauth.rb +24 -0
  124. data/test/dummy/lib/shared_verification_fields.rb +16 -0
  125. data/test/dummy/log/test.log +45240 -0
  126. data/test/i18n_test.rb +22 -0
  127. data/test/integration/test_paranoid_verification_code_workflow.rb +53 -0
  128. data/test/integration/test_password_expirable_workflow.rb +53 -0
  129. data/test/integration/test_session_limitable_workflow.rb +69 -0
  130. data/test/orm/active_record.rb +15 -0
  131. data/test/orm/mongoid.rb +13 -0
  132. data/test/support/integration_helpers.rb +35 -0
  133. data/test/support/mongoid.yml +6 -0
  134. data/test/test_compatibility.rb +15 -0
  135. data/test/test_complexity_validator.rb +282 -0
  136. data/test/test_database_authenticatable_patch.rb +146 -0
  137. data/test/test_helper.rb +41 -9
  138. data/test/test_install_generator.rb +20 -3
  139. data/test/test_paranoid_verification.rb +10 -9
  140. data/test/test_password_archivable.rb +37 -13
  141. data/test/test_password_expirable.rb +72 -9
  142. data/test/test_secure_validatable.rb +289 -55
  143. data/test/test_secure_validatable_overrides.rb +185 -0
  144. data/test/test_session_limitable.rb +57 -0
  145. data/test/tmp/config/initializers/devise_security.rb +52 -0
  146. data/test/tmp/config/locales/devise.security_extension.by.yml +50 -0
  147. data/test/tmp/config/locales/devise.security_extension.cs.yml +46 -0
  148. data/test/tmp/config/locales/devise.security_extension.de.yml +42 -0
  149. data/test/tmp/config/locales/devise.security_extension.en.yml +42 -0
  150. data/test/tmp/config/locales/devise.security_extension.es.yml +42 -0
  151. data/test/tmp/config/locales/devise.security_extension.fa.yml +42 -0
  152. data/test/tmp/config/locales/devise.security_extension.fr.yml +42 -0
  153. data/test/tmp/config/locales/devise.security_extension.hi.yml +43 -0
  154. data/test/tmp/config/locales/devise.security_extension.it.yml +42 -0
  155. data/test/tmp/config/locales/devise.security_extension.ja.yml +42 -0
  156. data/test/tmp/config/locales/devise.security_extension.nl.yml +42 -0
  157. data/test/tmp/config/locales/devise.security_extension.pt.yml +42 -0
  158. data/test/tmp/config/locales/devise.security_extension.ru.yml +50 -0
  159. data/test/tmp/config/locales/devise.security_extension.tr.yml +42 -0
  160. data/test/tmp/config/locales/devise.security_extension.uk.yml +50 -0
  161. data/test/tmp/config/locales/devise.security_extension.zh_CN.yml +42 -0
  162. data/test/tmp/config/locales/devise.security_extension.zh_TW.yml +42 -0
  163. metadata +290 -124
  164. data/.circleci/config.yml +0 -41
  165. data/.document +0 -5
  166. data/.gitignore +0 -40
  167. data/.rubocop.yml +0 -63
  168. data/.ruby-version +0 -1
  169. data/.travis.yml +0 -25
  170. data/Appraisals +0 -19
  171. data/Gemfile +0 -3
  172. data/Rakefile +0 -28
  173. data/devise-security.gemspec +0 -44
  174. data/gemfiles/rails_4.1_stable.gemfile +0 -8
  175. data/gemfiles/rails_4.2_stable.gemfile +0 -8
  176. data/gemfiles/rails_5.0_stable.gemfile +0 -8
  177. data/gemfiles/rails_5.1_stable.gemfile +0 -8
  178. data/gemfiles/rails_5.2_rc1.gemfile +0 -8
  179. data/lib/devise-security/models/old_password.rb +0 -4
  180. data/lib/devise-security/orm/active_record.rb +0 -18
  181. data/lib/devise-security/patches/confirmations_controller_captcha.rb +0 -21
  182. data/lib/devise-security/patches/confirmations_controller_security_question.rb +0 -24
  183. data/lib/devise-security/patches/passwords_controller_captcha.rb +0 -20
  184. data/lib/devise-security/patches/passwords_controller_security_question.rb +0 -23
  185. data/lib/devise-security/patches/registrations_controller_captcha.rb +0 -33
  186. data/lib/devise-security/patches/sessions_controller_captcha.rb +0 -24
  187. data/lib/devise-security/patches/unlocks_controller_captcha.rb +0 -20
  188. data/lib/devise-security/patches/unlocks_controller_security_question.rb +0 -23
  189. data/lib/devise-security/schema.rb +0 -64
  190. data/lib/generators/templates/devise-security.rb +0 -38
  191. data/test/dummy/app/controllers/foos_controller.rb +0 -0
  192. data/test/dummy/app/models/.gitkeep +0 -0
  193. data/test/dummy/app/models/secure_user.rb +0 -3
  194. data/test/test_password_expired_controller.rb +0 -44
  195. data/test/test_security_question_controller.rb +0 -84
metadata CHANGED
@@ -1,60 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-security
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
- - Marco Scholl
8
7
  - Alexander Dreher
9
- - Nate Bird
10
8
  - Dillon Welch
11
- autorequire:
9
+ - Kevin Olbrich
10
+ - Marco Scholl
11
+ - Nate Bird
12
+ autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2018-04-16 00:00:00.000000000 Z
15
+ date: 2023-04-15 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
- name: rails
18
+ name: devise
18
19
  requirement: !ruby/object:Gem::Requirement
19
20
  requirements:
20
21
  - - ">="
21
22
  - !ruby/object:Gem::Version
22
- version: 4.1.0
23
- - - "<"
24
- - !ruby/object:Gem::Version
25
- version: '6.0'
23
+ version: 4.3.0
26
24
  type: :runtime
27
25
  prerelease: false
28
26
  version_requirements: !ruby/object:Gem::Requirement
29
27
  requirements:
30
28
  - - ">="
31
29
  - !ruby/object:Gem::Version
32
- version: 4.1.0
33
- - - "<"
34
- - !ruby/object:Gem::Version
35
- version: '6.0'
30
+ version: 4.3.0
36
31
  - !ruby/object:Gem::Dependency
37
- name: devise
32
+ name: appraisal
38
33
  requirement: !ruby/object:Gem::Requirement
39
34
  requirements:
40
35
  - - ">="
41
36
  - !ruby/object:Gem::Version
42
- version: 4.2.0
43
- - - "<"
44
- - !ruby/object:Gem::Version
45
- version: '5.0'
46
- type: :runtime
37
+ version: '0'
38
+ type: :development
47
39
  prerelease: false
48
40
  version_requirements: !ruby/object:Gem::Requirement
49
41
  requirements:
50
42
  - - ">="
51
43
  - !ruby/object:Gem::Version
52
- version: 4.2.0
53
- - - "<"
54
- - !ruby/object:Gem::Version
55
- version: '5.0'
44
+ version: '0'
56
45
  - !ruby/object:Gem::Dependency
57
- name: appraisal
46
+ name: bundler
58
47
  requirement: !ruby/object:Gem::Requirement
59
48
  requirements:
60
49
  - - ">="
@@ -68,51 +57,59 @@ dependencies:
68
57
  - !ruby/object:Gem::Version
69
58
  version: '0'
70
59
  - !ruby/object:Gem::Dependency
71
- name: bundler
60
+ name: byebug
72
61
  requirement: !ruby/object:Gem::Requirement
73
62
  requirements:
74
63
  - - ">="
75
64
  - !ruby/object:Gem::Version
76
- version: 1.3.0
77
- - - "<"
78
- - !ruby/object:Gem::Version
79
- version: '2.0'
65
+ version: '0'
80
66
  type: :development
81
67
  prerelease: false
82
68
  version_requirements: !ruby/object:Gem::Requirement
83
69
  requirements:
84
70
  - - ">="
85
71
  - !ruby/object:Gem::Version
86
- version: 1.3.0
87
- - - "<"
88
- - !ruby/object:Gem::Version
89
- version: '2.0'
72
+ version: '0'
90
73
  - !ruby/object:Gem::Dependency
91
- name: coveralls
74
+ name: database_cleaner
92
75
  requirement: !ruby/object:Gem::Requirement
93
76
  requirements:
94
- - - "~>"
77
+ - - ">="
95
78
  - !ruby/object:Gem::Version
96
- version: '0.8'
79
+ version: '0'
97
80
  type: :development
98
81
  prerelease: false
99
82
  version_requirements: !ruby/object:Gem::Requirement
100
83
  requirements:
101
- - - "~>"
84
+ - - ">="
102
85
  - !ruby/object:Gem::Version
103
- version: '0.8'
86
+ version: '0'
104
87
  - !ruby/object:Gem::Dependency
105
88
  name: easy_captcha
106
89
  requirement: !ruby/object:Gem::Requirement
107
90
  requirements:
108
- - - "~>"
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: i18n-tasks
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
109
106
  - !ruby/object:Gem::Version
110
107
  version: '0'
111
108
  type: :development
112
109
  prerelease: false
113
110
  version_requirements: !ruby/object:Gem::Requirement
114
111
  requirements:
115
- - - "~>"
112
+ - - ">="
116
113
  - !ruby/object:Gem::Version
117
114
  version: '0'
118
115
  - !ruby/object:Gem::Dependency
@@ -133,18 +130,18 @@ dependencies:
133
130
  name: minitest
134
131
  requirement: !ruby/object:Gem::Requirement
135
132
  requirements:
136
- - - '='
133
+ - - ">="
137
134
  - !ruby/object:Gem::Version
138
- version: 5.10.3
135
+ version: '0'
139
136
  type: :development
140
137
  prerelease: false
141
138
  version_requirements: !ruby/object:Gem::Requirement
142
139
  requirements:
143
- - - '='
140
+ - - ">="
144
141
  - !ruby/object:Gem::Version
145
- version: 5.10.3
142
+ version: '0'
146
143
  - !ruby/object:Gem::Dependency
147
- name: pry-byebug
144
+ name: omniauth
148
145
  requirement: !ruby/object:Gem::Requirement
149
146
  requirements:
150
147
  - - ">="
@@ -172,7 +169,7 @@ dependencies:
172
169
  - !ruby/object:Gem::Version
173
170
  version: '0'
174
171
  - !ruby/object:Gem::Dependency
175
- name: pry
172
+ name: rails_email_validator
176
173
  requirement: !ruby/object:Gem::Requirement
177
174
  requirements:
178
175
  - - ">="
@@ -186,130 +183,193 @@ dependencies:
186
183
  - !ruby/object:Gem::Version
187
184
  version: '0'
188
185
  - !ruby/object:Gem::Dependency
189
- name: rails_email_validator
186
+ name: rubocop
190
187
  requirement: !ruby/object:Gem::Requirement
191
188
  requirements:
192
- - - "~>"
189
+ - - ">="
193
190
  - !ruby/object:Gem::Version
194
191
  version: '0'
195
192
  type: :development
196
193
  prerelease: false
197
194
  version_requirements: !ruby/object:Gem::Requirement
198
195
  requirements:
199
- - - "~>"
196
+ - - ">="
200
197
  - !ruby/object:Gem::Version
201
198
  version: '0'
202
199
  - !ruby/object:Gem::Dependency
203
- name: rubocop
200
+ name: rubocop-minitest
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ type: :development
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ - !ruby/object:Gem::Dependency
214
+ name: rubocop-rails
204
215
  requirement: !ruby/object:Gem::Requirement
205
216
  requirements:
206
- - - "~>"
217
+ - - ">="
207
218
  - !ruby/object:Gem::Version
208
219
  version: '0'
209
220
  type: :development
210
221
  prerelease: false
211
222
  version_requirements: !ruby/object:Gem::Requirement
212
223
  requirements:
213
- - - "~>"
224
+ - - ">="
214
225
  - !ruby/object:Gem::Version
215
226
  version: '0'
216
227
  - !ruby/object:Gem::Dependency
217
- name: sqlite3
228
+ name: simplecov-lcov
218
229
  requirement: !ruby/object:Gem::Requirement
219
230
  requirements:
220
- - - "~>"
231
+ - - ">="
221
232
  - !ruby/object:Gem::Version
222
- version: '1.3'
233
+ version: '0'
234
+ type: :development
235
+ prerelease: false
236
+ version_requirements: !ruby/object:Gem::Requirement
237
+ requirements:
223
238
  - - ">="
224
239
  - !ruby/object:Gem::Version
225
- version: 1.3.10
240
+ version: '0'
241
+ - !ruby/object:Gem::Dependency
242
+ name: solargraph
243
+ requirement: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
226
248
  type: :development
227
249
  prerelease: false
228
250
  version_requirements: !ruby/object:Gem::Requirement
229
251
  requirements:
230
- - - "~>"
252
+ - - ">="
231
253
  - !ruby/object:Gem::Version
232
- version: '1.3'
254
+ version: '0'
255
+ - !ruby/object:Gem::Dependency
256
+ name: solargraph-arc
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ requirements:
233
266
  - - ">="
234
267
  - !ruby/object:Gem::Version
235
- version: 1.3.10
268
+ version: '0'
236
269
  description: An enterprise security extension for devise.
237
270
  email: natebird@gmail.com
238
271
  executables: []
239
272
  extensions: []
240
273
  extra_rdoc_files: []
241
274
  files:
242
- - ".circleci/config.yml"
243
- - ".document"
244
- - ".gitignore"
245
- - ".rubocop.yml"
246
- - ".ruby-version"
247
- - ".travis.yml"
248
- - Appraisals
249
- - Gemfile
250
275
  - LICENSE.txt
251
276
  - README.md
252
- - Rakefile
253
277
  - app/controllers/devise/paranoid_verification_code_controller.rb
254
278
  - app/controllers/devise/password_expired_controller.rb
255
279
  - app/views/devise/paranoid_verification_code/show.html.erb
256
280
  - app/views/devise/password_expired/show.html.erb
281
+ - config/locales/bg.yml
282
+ - config/locales/by.yml
283
+ - config/locales/cs.yml
257
284
  - config/locales/de.yml
258
285
  - config/locales/en.yml
259
286
  - config/locales/es.yml
287
+ - config/locales/fa.yml
288
+ - config/locales/fr.yml
289
+ - config/locales/hi.yml
260
290
  - config/locales/it.yml
261
- - devise-security.gemspec
262
- - gemfiles/rails_4.1_stable.gemfile
263
- - gemfiles/rails_4.2_stable.gemfile
264
- - gemfiles/rails_5.0_stable.gemfile
265
- - gemfiles/rails_5.1_stable.gemfile
266
- - gemfiles/rails_5.2_rc1.gemfile
291
+ - config/locales/ja.yml
292
+ - config/locales/nl.yml
293
+ - config/locales/pt.yml
294
+ - config/locales/ru.yml
295
+ - config/locales/tr.yml
296
+ - config/locales/uk.yml
297
+ - config/locales/zh_CN.yml
298
+ - config/locales/zh_TW.yml
267
299
  - lib/devise-security.rb
268
300
  - lib/devise-security/controllers/helpers.rb
269
301
  - lib/devise-security/hooks/expirable.rb
270
302
  - lib/devise-security/hooks/paranoid_verification.rb
271
303
  - lib/devise-security/hooks/password_expirable.rb
272
304
  - lib/devise-security/hooks/session_limitable.rb
305
+ - lib/devise-security/models/active_record/old_password.rb
273
306
  - lib/devise-security/models/compatibility.rb
307
+ - lib/devise-security/models/compatibility/active_record_patch.rb
308
+ - lib/devise-security/models/compatibility/mongoid_patch.rb
274
309
  - lib/devise-security/models/database_authenticatable_patch.rb
275
310
  - lib/devise-security/models/expirable.rb
276
- - lib/devise-security/models/old_password.rb
311
+ - lib/devise-security/models/mongoid/old_password.rb
277
312
  - lib/devise-security/models/paranoid_verification.rb
278
313
  - lib/devise-security/models/password_archivable.rb
279
314
  - lib/devise-security/models/password_expirable.rb
280
315
  - lib/devise-security/models/secure_validatable.rb
281
316
  - lib/devise-security/models/security_questionable.rb
282
317
  - lib/devise-security/models/session_limitable.rb
283
- - lib/devise-security/orm/active_record.rb
318
+ - lib/devise-security/orm/mongoid.rb
284
319
  - lib/devise-security/patches.rb
285
- - lib/devise-security/patches/confirmations_controller_captcha.rb
286
- - lib/devise-security/patches/confirmations_controller_security_question.rb
287
320
  - lib/devise-security/patches/controller_captcha.rb
288
321
  - lib/devise-security/patches/controller_security_question.rb
289
- - lib/devise-security/patches/passwords_controller_captcha.rb
290
- - lib/devise-security/patches/passwords_controller_security_question.rb
291
- - lib/devise-security/patches/registrations_controller_captcha.rb
292
- - lib/devise-security/patches/sessions_controller_captcha.rb
293
- - lib/devise-security/patches/unlocks_controller_captcha.rb
294
- - lib/devise-security/patches/unlocks_controller_security_question.rb
295
322
  - lib/devise-security/rails.rb
296
323
  - lib/devise-security/routes.rb
297
- - lib/devise-security/schema.rb
324
+ - lib/devise-security/validators/password_complexity_validator.rb
298
325
  - lib/devise-security/version.rb
299
326
  - lib/generators/devise_security/install_generator.rb
300
- - lib/generators/templates/devise-security.rb
327
+ - lib/generators/templates/devise_security.rb
328
+ - test/controllers/test_captcha_controller.rb
329
+ - test/controllers/test_paranoid_verification_code_controller.rb
330
+ - test/controllers/test_password_expired_controller.rb
331
+ - test/controllers/test_security_question_controller.rb
301
332
  - test/dummy/Rakefile
333
+ - test/dummy/app/assets/config/manifest.js
302
334
  - test/dummy/app/controllers/application_controller.rb
303
335
  - test/dummy/app/controllers/captcha/sessions_controller.rb
304
- - test/dummy/app/controllers/foos_controller.rb
336
+ - test/dummy/app/controllers/overrides/paranoid_verification_code_controller.rb
337
+ - test/dummy/app/controllers/overrides/password_expired_controller.rb
305
338
  - test/dummy/app/controllers/security_question/unlocks_controller.rb
306
- - test/dummy/app/models/.gitkeep
339
+ - test/dummy/app/controllers/widgets_controller.rb
307
340
  - test/dummy/app/models/application_record.rb
341
+ - test/dummy/app/models/application_user_record.rb
308
342
  - test/dummy/app/models/captcha_user.rb
309
- - test/dummy/app/models/secure_user.rb
343
+ - test/dummy/app/models/mongoid/confirmable_fields.rb
344
+ - test/dummy/app/models/mongoid/database_authenticable_fields.rb
345
+ - test/dummy/app/models/mongoid/expirable_fields.rb
346
+ - test/dummy/app/models/mongoid/lockable_fields.rb
347
+ - test/dummy/app/models/mongoid/mappings.rb
348
+ - test/dummy/app/models/mongoid/omniauthable_fields.rb
349
+ - test/dummy/app/models/mongoid/paranoid_verification_fields.rb
350
+ - test/dummy/app/models/mongoid/password_archivable_fields.rb
351
+ - test/dummy/app/models/mongoid/password_expirable_fields.rb
352
+ - test/dummy/app/models/mongoid/recoverable_fields.rb
353
+ - test/dummy/app/models/mongoid/registerable_fields.rb
354
+ - test/dummy/app/models/mongoid/rememberable_fields.rb
355
+ - test/dummy/app/models/mongoid/secure_validatable_fields.rb
356
+ - test/dummy/app/models/mongoid/security_questionable_fields.rb
357
+ - test/dummy/app/models/mongoid/session_limitable_fields.rb
358
+ - test/dummy/app/models/mongoid/timeoutable_fields.rb
359
+ - test/dummy/app/models/mongoid/trackable_fields.rb
360
+ - test/dummy/app/models/mongoid/validatable_fields.rb
361
+ - test/dummy/app/models/paranoid_verification_user.rb
362
+ - test/dummy/app/models/password_expired_user.rb
310
363
  - test/dummy/app/models/security_question_user.rb
311
364
  - test/dummy/app/models/user.rb
312
365
  - test/dummy/app/models/widget.rb
366
+ - test/dummy/app/mongoid/admin.rb
367
+ - test/dummy/app/mongoid/one_user.rb
368
+ - test/dummy/app/mongoid/shim.rb
369
+ - test/dummy/app/mongoid/user_on_engine.rb
370
+ - test/dummy/app/mongoid/user_on_main_app.rb
371
+ - test/dummy/app/mongoid/user_with_validations.rb
372
+ - test/dummy/app/mongoid/user_without_email.rb
313
373
  - test/dummy/app/views/foos/index.html.erb
314
374
  - test/dummy/config.ru
315
375
  - test/dummy/config/application.rb
@@ -319,6 +379,8 @@ files:
319
379
  - test/dummy/config/environments/test.rb
320
380
  - test/dummy/config/initializers/devise.rb
321
381
  - test/dummy/config/initializers/migration_class.rb
382
+ - test/dummy/config/locales/en.yml
383
+ - test/dummy/config/mongoid.yml
322
384
  - test/dummy/config/routes.rb
323
385
  - test/dummy/config/secrets.yml
324
386
  - test/dummy/db/migrate/20120508165529_create_tables.rb
@@ -330,20 +392,55 @@ files:
330
392
  - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
331
393
  - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
332
394
  - test/dummy/db/migrate/20180319114023_add_widget.rb
333
- - test/test_captcha_controller.rb
395
+ - test/dummy/lib/shared_expirable_columns.rb
396
+ - test/dummy/lib/shared_security_questions_fields.rb
397
+ - test/dummy/lib/shared_user.rb
398
+ - test/dummy/lib/shared_user_with_password_verification.rb
399
+ - test/dummy/lib/shared_user_without_omniauth.rb
400
+ - test/dummy/lib/shared_verification_fields.rb
401
+ - test/dummy/log/test.log
402
+ - test/i18n_test.rb
403
+ - test/integration/test_paranoid_verification_code_workflow.rb
404
+ - test/integration/test_password_expirable_workflow.rb
405
+ - test/integration/test_session_limitable_workflow.rb
406
+ - test/orm/active_record.rb
407
+ - test/orm/mongoid.rb
408
+ - test/support/integration_helpers.rb
409
+ - test/support/mongoid.yml
410
+ - test/test_compatibility.rb
411
+ - test/test_complexity_validator.rb
412
+ - test/test_database_authenticatable_patch.rb
334
413
  - test/test_helper.rb
335
414
  - test/test_install_generator.rb
336
415
  - test/test_paranoid_verification.rb
337
416
  - test/test_password_archivable.rb
338
417
  - test/test_password_expirable.rb
339
- - test/test_password_expired_controller.rb
340
418
  - test/test_secure_validatable.rb
341
- - test/test_security_question_controller.rb
419
+ - test/test_secure_validatable_overrides.rb
420
+ - test/test_session_limitable.rb
421
+ - test/tmp/config/initializers/devise_security.rb
422
+ - test/tmp/config/locales/devise.security_extension.by.yml
423
+ - test/tmp/config/locales/devise.security_extension.cs.yml
424
+ - test/tmp/config/locales/devise.security_extension.de.yml
425
+ - test/tmp/config/locales/devise.security_extension.en.yml
426
+ - test/tmp/config/locales/devise.security_extension.es.yml
427
+ - test/tmp/config/locales/devise.security_extension.fa.yml
428
+ - test/tmp/config/locales/devise.security_extension.fr.yml
429
+ - test/tmp/config/locales/devise.security_extension.hi.yml
430
+ - test/tmp/config/locales/devise.security_extension.it.yml
431
+ - test/tmp/config/locales/devise.security_extension.ja.yml
432
+ - test/tmp/config/locales/devise.security_extension.nl.yml
433
+ - test/tmp/config/locales/devise.security_extension.pt.yml
434
+ - test/tmp/config/locales/devise.security_extension.ru.yml
435
+ - test/tmp/config/locales/devise.security_extension.tr.yml
436
+ - test/tmp/config/locales/devise.security_extension.uk.yml
437
+ - test/tmp/config/locales/devise.security_extension.zh_CN.yml
438
+ - test/tmp/config/locales/devise.security_extension.zh_TW.yml
342
439
  homepage: https://github.com/devise-security/devise-security
343
440
  licenses:
344
441
  - MIT
345
442
  metadata: {}
346
- post_install_message:
443
+ post_install_message:
347
444
  rdoc_options: []
348
445
  require_paths:
349
446
  - lib
@@ -351,57 +448,126 @@ required_ruby_version: !ruby/object:Gem::Requirement
351
448
  requirements:
352
449
  - - ">="
353
450
  - !ruby/object:Gem::Version
354
- version: 2.2.9
451
+ version: 2.3.0
355
452
  required_rubygems_version: !ruby/object:Gem::Requirement
356
453
  requirements:
357
454
  - - ">="
358
455
  - !ruby/object:Gem::Version
359
456
  version: '0'
360
457
  requirements: []
361
- rubyforge_project:
362
- rubygems_version: 2.7.6
363
- signing_key:
458
+ rubygems_version: 3.1.6
459
+ signing_key:
364
460
  specification_version: 4
365
461
  summary: Security extension for devise
366
462
  test_files:
367
- - test/dummy/Rakefile
368
- - test/dummy/app/controllers/application_controller.rb
369
- - test/dummy/app/controllers/captcha/sessions_controller.rb
370
- - test/dummy/app/controllers/foos_controller.rb
371
- - test/dummy/app/controllers/security_question/unlocks_controller.rb
372
- - test/dummy/app/models/.gitkeep
463
+ - test/test_password_archivable.rb
464
+ - test/dummy/app/mongoid/shim.rb
465
+ - test/dummy/app/mongoid/user_on_main_app.rb
466
+ - test/dummy/app/mongoid/user_on_engine.rb
467
+ - test/dummy/app/mongoid/one_user.rb
468
+ - test/dummy/app/mongoid/admin.rb
469
+ - test/dummy/app/mongoid/user_with_validations.rb
470
+ - test/dummy/app/mongoid/user_without_email.rb
471
+ - test/dummy/app/models/mongoid/password_archivable_fields.rb
472
+ - test/dummy/app/models/mongoid/registerable_fields.rb
473
+ - test/dummy/app/models/mongoid/mappings.rb
474
+ - test/dummy/app/models/mongoid/session_limitable_fields.rb
475
+ - test/dummy/app/models/mongoid/timeoutable_fields.rb
476
+ - test/dummy/app/models/mongoid/paranoid_verification_fields.rb
477
+ - test/dummy/app/models/mongoid/confirmable_fields.rb
478
+ - test/dummy/app/models/mongoid/password_expirable_fields.rb
479
+ - test/dummy/app/models/mongoid/expirable_fields.rb
480
+ - test/dummy/app/models/mongoid/database_authenticable_fields.rb
481
+ - test/dummy/app/models/mongoid/secure_validatable_fields.rb
482
+ - test/dummy/app/models/mongoid/rememberable_fields.rb
483
+ - test/dummy/app/models/mongoid/lockable_fields.rb
484
+ - test/dummy/app/models/mongoid/security_questionable_fields.rb
485
+ - test/dummy/app/models/mongoid/validatable_fields.rb
486
+ - test/dummy/app/models/mongoid/trackable_fields.rb
487
+ - test/dummy/app/models/mongoid/recoverable_fields.rb
488
+ - test/dummy/app/models/mongoid/omniauthable_fields.rb
489
+ - test/dummy/app/models/security_question_user.rb
490
+ - test/dummy/app/models/application_user_record.rb
491
+ - test/dummy/app/models/widget.rb
492
+ - test/dummy/app/models/password_expired_user.rb
493
+ - test/dummy/app/models/paranoid_verification_user.rb
373
494
  - test/dummy/app/models/application_record.rb
374
495
  - test/dummy/app/models/captcha_user.rb
375
- - test/dummy/app/models/secure_user.rb
376
- - test/dummy/app/models/security_question_user.rb
377
496
  - test/dummy/app/models/user.rb
378
- - test/dummy/app/models/widget.rb
497
+ - test/dummy/app/controllers/overrides/password_expired_controller.rb
498
+ - test/dummy/app/controllers/overrides/paranoid_verification_code_controller.rb
499
+ - test/dummy/app/controllers/application_controller.rb
500
+ - test/dummy/app/controllers/captcha/sessions_controller.rb
501
+ - test/dummy/app/controllers/widgets_controller.rb
502
+ - test/dummy/app/controllers/security_question/unlocks_controller.rb
379
503
  - test/dummy/app/views/foos/index.html.erb
380
- - test/dummy/config.ru
504
+ - test/dummy/app/assets/config/manifest.js
505
+ - test/dummy/config/secrets.yml
506
+ - test/dummy/config/routes.rb
507
+ - test/dummy/config/mongoid.yml
508
+ - test/dummy/config/locales/en.yml
509
+ - test/dummy/config/environments/test.rb
510
+ - test/dummy/config/environment.rb
381
511
  - test/dummy/config/application.rb
382
- - test/dummy/config/boot.rb
383
512
  - test/dummy/config/database.yml
384
- - test/dummy/config/environment.rb
385
- - test/dummy/config/environments/test.rb
386
- - test/dummy/config/initializers/devise.rb
513
+ - test/dummy/config/boot.rb
387
514
  - test/dummy/config/initializers/migration_class.rb
388
- - test/dummy/config/routes.rb
389
- - test/dummy/config/secrets.yml
515
+ - test/dummy/config/initializers/devise.rb
516
+ - test/dummy/config.ru
517
+ - test/dummy/Rakefile
518
+ - test/dummy/lib/shared_verification_fields.rb
519
+ - test/dummy/lib/shared_user.rb
520
+ - test/dummy/lib/shared_user_without_omniauth.rb
521
+ - test/dummy/lib/shared_user_with_password_verification.rb
522
+ - test/dummy/lib/shared_expirable_columns.rb
523
+ - test/dummy/lib/shared_security_questions_fields.rb
390
524
  - test/dummy/db/migrate/20120508165529_create_tables.rb
391
525
  - test/dummy/db/migrate/20150402165590_add_verification_columns.rb
392
- - test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb
526
+ - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
527
+ - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
393
528
  - test/dummy/db/migrate/20160320162345_add_security_questions_fields.rb
529
+ - test/dummy/db/migrate/20180319114023_add_widget.rb
394
530
  - test/dummy/db/migrate/20180318103603_add_expireable_columns.rb
531
+ - test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb
395
532
  - test/dummy/db/migrate/20180318105329_add_confirmable_columns.rb
396
- - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
397
- - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
398
- - test/dummy/db/migrate/20180319114023_add_widget.rb
399
- - test/test_captcha_controller.rb
400
- - test/test_helper.rb
533
+ - test/dummy/log/test.log
401
534
  - test/test_install_generator.rb
535
+ - test/test_secure_validatable_overrides.rb
536
+ - test/i18n_test.rb
402
537
  - test/test_paranoid_verification.rb
403
- - test/test_password_archivable.rb
404
- - test/test_password_expirable.rb
405
- - test/test_password_expired_controller.rb
538
+ - test/integration/test_session_limitable_workflow.rb
539
+ - test/integration/test_password_expirable_workflow.rb
540
+ - test/integration/test_paranoid_verification_code_workflow.rb
541
+ - test/test_database_authenticatable_patch.rb
406
542
  - test/test_secure_validatable.rb
407
- - test/test_security_question_controller.rb
543
+ - test/test_session_limitable.rb
544
+ - test/support/mongoid.yml
545
+ - test/support/integration_helpers.rb
546
+ - test/test_helper.rb
547
+ - test/orm/mongoid.rb
548
+ - test/orm/active_record.rb
549
+ - test/test_compatibility.rb
550
+ - test/test_password_expirable.rb
551
+ - test/controllers/test_security_question_controller.rb
552
+ - test/controllers/test_paranoid_verification_code_controller.rb
553
+ - test/controllers/test_captcha_controller.rb
554
+ - test/controllers/test_password_expired_controller.rb
555
+ - test/tmp/config/locales/devise.security_extension.by.yml
556
+ - test/tmp/config/locales/devise.security_extension.nl.yml
557
+ - test/tmp/config/locales/devise.security_extension.tr.yml
558
+ - test/tmp/config/locales/devise.security_extension.ru.yml
559
+ - test/tmp/config/locales/devise.security_extension.fr.yml
560
+ - test/tmp/config/locales/devise.security_extension.fa.yml
561
+ - test/tmp/config/locales/devise.security_extension.hi.yml
562
+ - test/tmp/config/locales/devise.security_extension.ja.yml
563
+ - test/tmp/config/locales/devise.security_extension.en.yml
564
+ - test/tmp/config/locales/devise.security_extension.pt.yml
565
+ - test/tmp/config/locales/devise.security_extension.it.yml
566
+ - test/tmp/config/locales/devise.security_extension.de.yml
567
+ - test/tmp/config/locales/devise.security_extension.es.yml
568
+ - test/tmp/config/locales/devise.security_extension.zh_CN.yml
569
+ - test/tmp/config/locales/devise.security_extension.uk.yml
570
+ - test/tmp/config/locales/devise.security_extension.zh_TW.yml
571
+ - test/tmp/config/locales/devise.security_extension.cs.yml
572
+ - test/tmp/config/initializers/devise_security.rb
573
+ - test/test_complexity_validator.rb