devise-security 0.12.0 → 0.16.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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +186 -63
  3. data/app/controllers/devise/paranoid_verification_code_controller.rb +2 -0
  4. data/app/controllers/devise/password_expired_controller.rb +13 -6
  5. data/app/views/devise/paranoid_verification_code/show.html.erb +4 -4
  6. data/app/views/devise/password_expired/show.html.erb +6 -6
  7. data/config/locales/by.yml +49 -0
  8. data/config/locales/cs.yml +41 -0
  9. data/config/locales/de.yml +30 -7
  10. data/config/locales/en.yml +25 -1
  11. data/config/locales/es.yml +19 -6
  12. data/config/locales/fa.yml +41 -0
  13. data/config/locales/fr.yml +30 -0
  14. data/config/locales/hi.yml +42 -0
  15. data/config/locales/it.yml +35 -4
  16. data/config/locales/ja.yml +30 -0
  17. data/config/locales/nl.yml +41 -0
  18. data/config/locales/pt.yml +41 -0
  19. data/config/locales/ru.yml +49 -0
  20. data/config/locales/tr.yml +18 -0
  21. data/config/locales/uk.yml +49 -0
  22. data/config/locales/zh_CN.yml +41 -0
  23. data/config/locales/zh_TW.yml +41 -0
  24. data/lib/devise-security/controllers/helpers.rb +61 -50
  25. data/lib/devise-security/hooks/expirable.rb +3 -1
  26. data/lib/devise-security/hooks/paranoid_verification.rb +2 -0
  27. data/lib/devise-security/hooks/password_expirable.rb +4 -0
  28. data/lib/devise-security/hooks/session_limitable.rb +31 -14
  29. data/lib/devise-security/models/active_record/old_password.rb +5 -0
  30. data/lib/devise-security/models/compatibility/active_record_patch.rb +40 -0
  31. data/lib/devise-security/models/compatibility/mongoid_patch.rb +31 -0
  32. data/lib/devise-security/models/compatibility.rb +8 -15
  33. data/lib/devise-security/models/database_authenticatable_patch.rb +3 -1
  34. data/lib/devise-security/models/expirable.rb +8 -2
  35. data/lib/devise-security/models/mongoid/old_password.rb +21 -0
  36. data/lib/devise-security/models/paranoid_verification.rb +2 -0
  37. data/lib/devise-security/models/password_archivable.rb +18 -7
  38. data/lib/devise-security/models/password_expirable.rb +103 -48
  39. data/lib/devise-security/models/secure_validatable.rb +26 -6
  40. data/lib/devise-security/models/security_questionable.rb +2 -0
  41. data/lib/devise-security/models/session_limitable.rb +19 -2
  42. data/lib/devise-security/orm/mongoid.rb +7 -0
  43. data/lib/devise-security/patches/confirmations_controller_captcha.rb +2 -0
  44. data/lib/devise-security/patches/confirmations_controller_security_question.rb +2 -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/passwords_controller_captcha.rb +2 -0
  48. data/lib/devise-security/patches/passwords_controller_security_question.rb +2 -0
  49. data/lib/devise-security/patches/registrations_controller_captcha.rb +2 -0
  50. data/lib/devise-security/patches/sessions_controller_captcha.rb +2 -0
  51. data/lib/devise-security/patches/unlocks_controller_captcha.rb +2 -0
  52. data/lib/devise-security/patches/unlocks_controller_security_question.rb +2 -0
  53. data/lib/devise-security/patches.rb +2 -0
  54. data/lib/devise-security/rails.rb +2 -0
  55. data/lib/devise-security/routes.rb +2 -0
  56. data/lib/devise-security/validators/password_complexity_validator.rb +35 -0
  57. data/lib/devise-security/version.rb +3 -1
  58. data/lib/devise-security.rb +16 -10
  59. data/lib/generators/devise_security/install_generator.rb +5 -3
  60. data/lib/generators/templates/devise_security.rb +47 -0
  61. data/test/{test_captcha_controller.rb → controllers/test_captcha_controller.rb} +2 -0
  62. data/test/controllers/test_password_expired_controller.rb +110 -0
  63. data/test/controllers/test_security_question_controller.rb +60 -0
  64. data/test/dummy/Rakefile +3 -1
  65. data/test/dummy/app/assets/config/manifest.js +3 -0
  66. data/test/dummy/app/controllers/application_controller.rb +2 -0
  67. data/test/dummy/app/controllers/captcha/sessions_controller.rb +2 -0
  68. data/test/dummy/app/controllers/security_question/unlocks_controller.rb +2 -0
  69. data/test/dummy/app/controllers/widgets_controller.rb +6 -0
  70. data/test/dummy/app/models/application_record.rb +10 -2
  71. data/test/dummy/app/models/application_user_record.rb +11 -0
  72. data/test/dummy/app/models/captcha_user.rb +7 -2
  73. data/test/dummy/app/models/mongoid/confirmable_fields.rb +13 -0
  74. data/test/dummy/app/models/mongoid/database_authenticable_fields.rb +17 -0
  75. data/test/dummy/app/models/mongoid/expirable_fields.rb +11 -0
  76. data/test/dummy/app/models/mongoid/lockable_fields.rb +13 -0
  77. data/test/dummy/app/models/mongoid/mappings.rb +13 -0
  78. data/test/dummy/app/models/mongoid/omniauthable_fields.rb +11 -0
  79. data/test/dummy/app/models/mongoid/paranoid_verification_fields.rb +10 -0
  80. data/test/dummy/app/models/mongoid/password_archivable_fields.rb +9 -0
  81. data/test/dummy/app/models/mongoid/password_expirable_fields.rb +10 -0
  82. data/test/dummy/app/models/mongoid/recoverable_fields.rb +11 -0
  83. data/test/dummy/app/models/mongoid/registerable_fields.rb +19 -0
  84. data/test/dummy/app/models/mongoid/rememberable_fields.rb +10 -0
  85. data/test/dummy/app/models/mongoid/secure_validatable_fields.rb +11 -0
  86. data/test/dummy/app/models/mongoid/security_questionable_fields.rb +13 -0
  87. data/test/dummy/app/models/mongoid/session_limitable_fields.rb +10 -0
  88. data/test/dummy/app/models/mongoid/timeoutable_fields.rb +9 -0
  89. data/test/dummy/app/models/mongoid/trackable_fields.rb +14 -0
  90. data/test/dummy/app/models/mongoid/validatable_fields.rb +7 -0
  91. data/test/dummy/app/models/secure_user.rb +7 -1
  92. data/test/dummy/app/models/security_question_user.rb +9 -4
  93. data/test/dummy/app/models/user.rb +15 -0
  94. data/test/dummy/app/models/widget.rb +6 -0
  95. data/test/dummy/app/mongoid/admin.rb +31 -0
  96. data/test/dummy/app/mongoid/one_user.rb +58 -0
  97. data/test/dummy/app/mongoid/shim.rb +25 -0
  98. data/test/dummy/app/mongoid/user_on_engine.rb +41 -0
  99. data/test/dummy/app/mongoid/user_on_main_app.rb +41 -0
  100. data/test/dummy/app/mongoid/user_with_validations.rb +37 -0
  101. data/test/dummy/app/mongoid/user_without_email.rb +35 -0
  102. data/test/dummy/config/application.rb +13 -7
  103. data/test/dummy/config/boot.rb +2 -0
  104. data/test/dummy/config/environment.rb +2 -0
  105. data/test/dummy/config/environments/test.rb +5 -13
  106. data/test/dummy/config/initializers/devise.rb +10 -3
  107. data/test/dummy/config/initializers/migration_class.rb +3 -6
  108. data/test/dummy/config/mongoid.yml +6 -0
  109. data/test/dummy/config/routes.rb +6 -3
  110. data/test/dummy/config.ru +3 -1
  111. data/test/dummy/db/migrate/20120508165529_create_tables.rb +13 -2
  112. data/test/dummy/db/migrate/20150402165590_add_verification_columns.rb +2 -0
  113. data/test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb +2 -0
  114. data/test/dummy/db/migrate/20160320162345_add_security_questions_fields.rb +2 -0
  115. data/test/dummy/db/migrate/20180318103603_add_expireable_columns.rb +2 -0
  116. data/test/dummy/db/migrate/20180318105329_add_confirmable_columns.rb +2 -0
  117. data/test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb +2 -0
  118. data/test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb +2 -0
  119. data/test/dummy/db/migrate/20180319114023_add_widget.rb +2 -0
  120. data/test/dummy/lib/shared_expirable_columns.rb +14 -0
  121. data/test/dummy/lib/shared_security_questions_fields.rb +16 -0
  122. data/test/dummy/lib/shared_user.rb +32 -0
  123. data/test/dummy/lib/shared_user_with_password_verification.rb +13 -0
  124. data/test/dummy/lib/shared_user_without_email.rb +28 -0
  125. data/test/dummy/lib/shared_user_without_omniauth.rb +15 -0
  126. data/test/dummy/lib/shared_verification_fields.rb +15 -0
  127. data/test/dummy/log/development.log +883 -0
  128. data/test/dummy/log/test.log +21689 -0
  129. data/test/integration/test_password_expirable_workflow.rb +53 -0
  130. data/test/integration/test_session_limitable_workflow.rb +67 -0
  131. data/test/orm/active_record.rb +15 -0
  132. data/test/orm/mongoid.rb +13 -0
  133. data/test/support/integration_helpers.rb +29 -0
  134. data/test/support/mongoid.yml +6 -0
  135. data/test/test_compatibility.rb +13 -0
  136. data/test/test_complexity_validator.rb +72 -0
  137. data/test/test_helper.rb +42 -9
  138. data/test/test_install_generator.rb +19 -2
  139. data/test/test_paranoid_verification.rb +2 -0
  140. data/test/test_password_archivable.rb +8 -7
  141. data/test/test_password_expirable.rb +70 -7
  142. data/test/test_secure_validatable.rb +97 -21
  143. data/test/test_session_limitable.rb +57 -0
  144. data/{lib/generators/templates → test/tmp/config/initializers}/devise-security.rb +12 -3
  145. data/test/tmp/config/locales/devise.security_extension.by.yml +49 -0
  146. data/test/tmp/config/locales/devise.security_extension.cs.yml +41 -0
  147. data/test/tmp/config/locales/devise.security_extension.de.yml +39 -0
  148. data/test/tmp/config/locales/devise.security_extension.en.yml +41 -0
  149. data/test/tmp/config/locales/devise.security_extension.es.yml +30 -0
  150. data/test/tmp/config/locales/devise.security_extension.fa.yml +41 -0
  151. data/test/tmp/config/locales/devise.security_extension.fr.yml +30 -0
  152. data/test/tmp/config/locales/devise.security_extension.hi.yml +42 -0
  153. data/test/tmp/config/locales/devise.security_extension.it.yml +41 -0
  154. data/test/tmp/config/locales/devise.security_extension.ja.yml +30 -0
  155. data/test/tmp/config/locales/devise.security_extension.nl.yml +41 -0
  156. data/test/tmp/config/locales/devise.security_extension.pt.yml +41 -0
  157. data/test/tmp/config/locales/devise.security_extension.ru.yml +49 -0
  158. data/test/tmp/config/locales/devise.security_extension.tr.yml +18 -0
  159. data/test/tmp/config/locales/devise.security_extension.uk.yml +49 -0
  160. data/test/tmp/config/locales/devise.security_extension.zh_CN.yml +41 -0
  161. data/test/tmp/config/locales/devise.security_extension.zh_TW.yml +41 -0
  162. metadata +235 -110
  163. data/.circleci/config.yml +0 -41
  164. data/.document +0 -5
  165. data/.gitignore +0 -40
  166. data/.rubocop.yml +0 -63
  167. data/.ruby-version +0 -1
  168. data/.travis.yml +0 -25
  169. data/Appraisals +0 -19
  170. data/Gemfile +0 -3
  171. data/Rakefile +0 -28
  172. data/devise-security.gemspec +0 -44
  173. data/gemfiles/rails_4.1_stable.gemfile +0 -8
  174. data/gemfiles/rails_4.2_stable.gemfile +0 -8
  175. data/gemfiles/rails_5.0_stable.gemfile +0 -8
  176. data/gemfiles/rails_5.1_stable.gemfile +0 -8
  177. data/gemfiles/rails_5.2_rc1.gemfile +0 -8
  178. data/lib/devise-security/models/old_password.rb +0 -4
  179. data/lib/devise-security/orm/active_record.rb +0 -18
  180. data/lib/devise-security/schema.rb +0 -64
  181. data/test/dummy/app/models/.gitkeep +0 -0
  182. data/test/test_password_expired_controller.rb +0 -44
  183. data/test/test_security_question_controller.rb +0 -84
metadata CHANGED
@@ -1,60 +1,55 @@
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.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Scholl
8
8
  - Alexander Dreher
9
9
  - Nate Bird
10
10
  - Dillon Welch
11
- autorequire:
11
+ - Kevin Olbrich
12
+ autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2018-04-16 00:00:00.000000000 Z
15
+ date: 2021-05-03 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
+ version: 4.3.0
23
24
  - - "<"
24
25
  - !ruby/object:Gem::Version
25
- version: '6.0'
26
+ version: '5.0'
26
27
  type: :runtime
27
28
  prerelease: false
28
29
  version_requirements: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ">="
31
32
  - !ruby/object:Gem::Version
32
- version: 4.1.0
33
+ version: 4.3.0
33
34
  - - "<"
34
35
  - !ruby/object:Gem::Version
35
- version: '6.0'
36
+ version: '5.0'
36
37
  - !ruby/object:Gem::Dependency
37
- name: devise
38
+ name: appraisal
38
39
  requirement: !ruby/object:Gem::Requirement
39
40
  requirements:
40
41
  - - ">="
41
42
  - !ruby/object:Gem::Version
42
- version: 4.2.0
43
- - - "<"
44
- - !ruby/object:Gem::Version
45
- version: '5.0'
46
- type: :runtime
43
+ version: '0'
44
+ type: :development
47
45
  prerelease: false
48
46
  version_requirements: !ruby/object:Gem::Requirement
49
47
  requirements:
50
48
  - - ">="
51
49
  - !ruby/object:Gem::Version
52
- version: 4.2.0
53
- - - "<"
54
- - !ruby/object:Gem::Version
55
- version: '5.0'
50
+ version: '0'
56
51
  - !ruby/object:Gem::Dependency
57
- name: appraisal
52
+ name: bundler
58
53
  requirement: !ruby/object:Gem::Requirement
59
54
  requirements:
60
55
  - - ">="
@@ -68,55 +63,49 @@ dependencies:
68
63
  - !ruby/object:Gem::Version
69
64
  version: '0'
70
65
  - !ruby/object:Gem::Dependency
71
- name: bundler
66
+ name: database_cleaner
72
67
  requirement: !ruby/object:Gem::Requirement
73
68
  requirements:
74
69
  - - ">="
75
70
  - !ruby/object:Gem::Version
76
- version: 1.3.0
77
- - - "<"
78
- - !ruby/object:Gem::Version
79
- version: '2.0'
71
+ version: '0'
80
72
  type: :development
81
73
  prerelease: false
82
74
  version_requirements: !ruby/object:Gem::Requirement
83
75
  requirements:
84
76
  - - ">="
85
77
  - !ruby/object:Gem::Version
86
- version: 1.3.0
87
- - - "<"
88
- - !ruby/object:Gem::Version
89
- version: '2.0'
78
+ version: '0'
90
79
  - !ruby/object:Gem::Dependency
91
- name: coveralls
80
+ name: easy_captcha
92
81
  requirement: !ruby/object:Gem::Requirement
93
82
  requirements:
94
- - - "~>"
83
+ - - ">="
95
84
  - !ruby/object:Gem::Version
96
- version: '0.8'
85
+ version: '0'
97
86
  type: :development
98
87
  prerelease: false
99
88
  version_requirements: !ruby/object:Gem::Requirement
100
89
  requirements:
101
- - - "~>"
90
+ - - ">="
102
91
  - !ruby/object:Gem::Version
103
- version: '0.8'
92
+ version: '0'
104
93
  - !ruby/object:Gem::Dependency
105
- name: easy_captcha
94
+ name: m
106
95
  requirement: !ruby/object:Gem::Requirement
107
96
  requirements:
108
- - - "~>"
97
+ - - ">="
109
98
  - !ruby/object:Gem::Version
110
99
  version: '0'
111
100
  type: :development
112
101
  prerelease: false
113
102
  version_requirements: !ruby/object:Gem::Requirement
114
103
  requirements:
115
- - - "~>"
104
+ - - ">="
116
105
  - !ruby/object:Gem::Version
117
106
  version: '0'
118
107
  - !ruby/object:Gem::Dependency
119
- name: m
108
+ name: minitest
120
109
  requirement: !ruby/object:Gem::Requirement
121
110
  requirements:
122
111
  - - ">="
@@ -130,19 +119,19 @@ dependencies:
130
119
  - !ruby/object:Gem::Version
131
120
  version: '0'
132
121
  - !ruby/object:Gem::Dependency
133
- name: minitest
122
+ name: omniauth
134
123
  requirement: !ruby/object:Gem::Requirement
135
124
  requirements:
136
- - - '='
125
+ - - "<"
137
126
  - !ruby/object:Gem::Version
138
- version: 5.10.3
127
+ version: 3.0.0
139
128
  type: :development
140
129
  prerelease: false
141
130
  version_requirements: !ruby/object:Gem::Requirement
142
131
  requirements:
143
- - - '='
132
+ - - "<"
144
133
  - !ruby/object:Gem::Version
145
- version: 5.10.3
134
+ version: 3.0.0
146
135
  - !ruby/object:Gem::Dependency
147
136
  name: pry-byebug
148
137
  requirement: !ruby/object:Gem::Requirement
@@ -172,7 +161,7 @@ dependencies:
172
161
  - !ruby/object:Gem::Version
173
162
  version: '0'
174
163
  - !ruby/object:Gem::Dependency
175
- name: pry
164
+ name: rails_email_validator
176
165
  requirement: !ruby/object:Gem::Requirement
177
166
  requirements:
178
167
  - - ">="
@@ -186,101 +175,110 @@ dependencies:
186
175
  - !ruby/object:Gem::Version
187
176
  version: '0'
188
177
  - !ruby/object:Gem::Dependency
189
- name: rails_email_validator
178
+ name: rubocop
190
179
  requirement: !ruby/object:Gem::Requirement
191
180
  requirements:
192
181
  - - "~>"
193
182
  - !ruby/object:Gem::Version
194
- version: '0'
183
+ version: 0.80.0
195
184
  type: :development
196
185
  prerelease: false
197
186
  version_requirements: !ruby/object:Gem::Requirement
198
187
  requirements:
199
188
  - - "~>"
200
189
  - !ruby/object:Gem::Version
201
- version: '0'
190
+ version: 0.80.0
202
191
  - !ruby/object:Gem::Dependency
203
- name: rubocop
192
+ name: rubocop-rails
204
193
  requirement: !ruby/object:Gem::Requirement
205
194
  requirements:
206
- - - "~>"
195
+ - - ">="
207
196
  - !ruby/object:Gem::Version
208
197
  version: '0'
209
198
  type: :development
210
199
  prerelease: false
211
200
  version_requirements: !ruby/object:Gem::Requirement
212
201
  requirements:
213
- - - "~>"
202
+ - - ">="
214
203
  - !ruby/object:Gem::Version
215
204
  version: '0'
216
205
  - !ruby/object:Gem::Dependency
217
- name: sqlite3
206
+ name: simplecov-lcov
218
207
  requirement: !ruby/object:Gem::Requirement
219
208
  requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '1.3'
223
209
  - - ">="
224
210
  - !ruby/object:Gem::Version
225
- version: 1.3.10
211
+ version: '0'
226
212
  type: :development
227
213
  prerelease: false
228
214
  version_requirements: !ruby/object:Gem::Requirement
229
215
  requirements:
230
- - - "~>"
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ - !ruby/object:Gem::Dependency
220
+ name: solargraph
221
+ requirement: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - ">="
231
224
  - !ruby/object:Gem::Version
232
- version: '1.3'
225
+ version: '0'
226
+ type: :development
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
233
230
  - - ">="
234
231
  - !ruby/object:Gem::Version
235
- version: 1.3.10
232
+ version: '0'
236
233
  description: An enterprise security extension for devise.
237
234
  email: natebird@gmail.com
238
235
  executables: []
239
236
  extensions: []
240
237
  extra_rdoc_files: []
241
238
  files:
242
- - ".circleci/config.yml"
243
- - ".document"
244
- - ".gitignore"
245
- - ".rubocop.yml"
246
- - ".ruby-version"
247
- - ".travis.yml"
248
- - Appraisals
249
- - Gemfile
250
239
  - LICENSE.txt
251
240
  - README.md
252
- - Rakefile
253
241
  - app/controllers/devise/paranoid_verification_code_controller.rb
254
242
  - app/controllers/devise/password_expired_controller.rb
255
243
  - app/views/devise/paranoid_verification_code/show.html.erb
256
244
  - app/views/devise/password_expired/show.html.erb
245
+ - config/locales/by.yml
246
+ - config/locales/cs.yml
257
247
  - config/locales/de.yml
258
248
  - config/locales/en.yml
259
249
  - config/locales/es.yml
250
+ - config/locales/fa.yml
251
+ - config/locales/fr.yml
252
+ - config/locales/hi.yml
260
253
  - 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
254
+ - config/locales/ja.yml
255
+ - config/locales/nl.yml
256
+ - config/locales/pt.yml
257
+ - config/locales/ru.yml
258
+ - config/locales/tr.yml
259
+ - config/locales/uk.yml
260
+ - config/locales/zh_CN.yml
261
+ - config/locales/zh_TW.yml
267
262
  - lib/devise-security.rb
268
263
  - lib/devise-security/controllers/helpers.rb
269
264
  - lib/devise-security/hooks/expirable.rb
270
265
  - lib/devise-security/hooks/paranoid_verification.rb
271
266
  - lib/devise-security/hooks/password_expirable.rb
272
267
  - lib/devise-security/hooks/session_limitable.rb
268
+ - lib/devise-security/models/active_record/old_password.rb
273
269
  - lib/devise-security/models/compatibility.rb
270
+ - lib/devise-security/models/compatibility/active_record_patch.rb
271
+ - lib/devise-security/models/compatibility/mongoid_patch.rb
274
272
  - lib/devise-security/models/database_authenticatable_patch.rb
275
273
  - lib/devise-security/models/expirable.rb
276
- - lib/devise-security/models/old_password.rb
274
+ - lib/devise-security/models/mongoid/old_password.rb
277
275
  - lib/devise-security/models/paranoid_verification.rb
278
276
  - lib/devise-security/models/password_archivable.rb
279
277
  - lib/devise-security/models/password_expirable.rb
280
278
  - lib/devise-security/models/secure_validatable.rb
281
279
  - lib/devise-security/models/security_questionable.rb
282
280
  - lib/devise-security/models/session_limitable.rb
283
- - lib/devise-security/orm/active_record.rb
281
+ - lib/devise-security/orm/mongoid.rb
284
282
  - lib/devise-security/patches.rb
285
283
  - lib/devise-security/patches/confirmations_controller_captcha.rb
286
284
  - lib/devise-security/patches/confirmations_controller_security_question.rb
@@ -294,22 +292,52 @@ files:
294
292
  - lib/devise-security/patches/unlocks_controller_security_question.rb
295
293
  - lib/devise-security/rails.rb
296
294
  - lib/devise-security/routes.rb
297
- - lib/devise-security/schema.rb
295
+ - lib/devise-security/validators/password_complexity_validator.rb
298
296
  - lib/devise-security/version.rb
299
297
  - lib/generators/devise_security/install_generator.rb
300
- - lib/generators/templates/devise-security.rb
298
+ - lib/generators/templates/devise_security.rb
299
+ - test/controllers/test_captcha_controller.rb
300
+ - test/controllers/test_password_expired_controller.rb
301
+ - test/controllers/test_security_question_controller.rb
301
302
  - test/dummy/Rakefile
303
+ - test/dummy/app/assets/config/manifest.js
302
304
  - test/dummy/app/controllers/application_controller.rb
303
305
  - test/dummy/app/controllers/captcha/sessions_controller.rb
304
306
  - test/dummy/app/controllers/foos_controller.rb
305
307
  - test/dummy/app/controllers/security_question/unlocks_controller.rb
306
- - test/dummy/app/models/.gitkeep
308
+ - test/dummy/app/controllers/widgets_controller.rb
307
309
  - test/dummy/app/models/application_record.rb
310
+ - test/dummy/app/models/application_user_record.rb
308
311
  - test/dummy/app/models/captcha_user.rb
312
+ - test/dummy/app/models/mongoid/confirmable_fields.rb
313
+ - test/dummy/app/models/mongoid/database_authenticable_fields.rb
314
+ - test/dummy/app/models/mongoid/expirable_fields.rb
315
+ - test/dummy/app/models/mongoid/lockable_fields.rb
316
+ - test/dummy/app/models/mongoid/mappings.rb
317
+ - test/dummy/app/models/mongoid/omniauthable_fields.rb
318
+ - test/dummy/app/models/mongoid/paranoid_verification_fields.rb
319
+ - test/dummy/app/models/mongoid/password_archivable_fields.rb
320
+ - test/dummy/app/models/mongoid/password_expirable_fields.rb
321
+ - test/dummy/app/models/mongoid/recoverable_fields.rb
322
+ - test/dummy/app/models/mongoid/registerable_fields.rb
323
+ - test/dummy/app/models/mongoid/rememberable_fields.rb
324
+ - test/dummy/app/models/mongoid/secure_validatable_fields.rb
325
+ - test/dummy/app/models/mongoid/security_questionable_fields.rb
326
+ - test/dummy/app/models/mongoid/session_limitable_fields.rb
327
+ - test/dummy/app/models/mongoid/timeoutable_fields.rb
328
+ - test/dummy/app/models/mongoid/trackable_fields.rb
329
+ - test/dummy/app/models/mongoid/validatable_fields.rb
309
330
  - test/dummy/app/models/secure_user.rb
310
331
  - test/dummy/app/models/security_question_user.rb
311
332
  - test/dummy/app/models/user.rb
312
333
  - test/dummy/app/models/widget.rb
334
+ - test/dummy/app/mongoid/admin.rb
335
+ - test/dummy/app/mongoid/one_user.rb
336
+ - test/dummy/app/mongoid/shim.rb
337
+ - test/dummy/app/mongoid/user_on_engine.rb
338
+ - test/dummy/app/mongoid/user_on_main_app.rb
339
+ - test/dummy/app/mongoid/user_with_validations.rb
340
+ - test/dummy/app/mongoid/user_without_email.rb
313
341
  - test/dummy/app/views/foos/index.html.erb
314
342
  - test/dummy/config.ru
315
343
  - test/dummy/config/application.rb
@@ -319,6 +347,7 @@ files:
319
347
  - test/dummy/config/environments/test.rb
320
348
  - test/dummy/config/initializers/devise.rb
321
349
  - test/dummy/config/initializers/migration_class.rb
350
+ - test/dummy/config/mongoid.yml
322
351
  - test/dummy/config/routes.rb
323
352
  - test/dummy/config/secrets.yml
324
353
  - test/dummy/db/migrate/20120508165529_create_tables.rb
@@ -330,20 +359,53 @@ files:
330
359
  - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
331
360
  - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
332
361
  - test/dummy/db/migrate/20180319114023_add_widget.rb
333
- - test/test_captcha_controller.rb
362
+ - test/dummy/lib/shared_expirable_columns.rb
363
+ - test/dummy/lib/shared_security_questions_fields.rb
364
+ - test/dummy/lib/shared_user.rb
365
+ - test/dummy/lib/shared_user_with_password_verification.rb
366
+ - test/dummy/lib/shared_user_without_email.rb
367
+ - test/dummy/lib/shared_user_without_omniauth.rb
368
+ - test/dummy/lib/shared_verification_fields.rb
369
+ - test/dummy/log/development.log
370
+ - test/dummy/log/test.log
371
+ - test/integration/test_password_expirable_workflow.rb
372
+ - test/integration/test_session_limitable_workflow.rb
373
+ - test/orm/active_record.rb
374
+ - test/orm/mongoid.rb
375
+ - test/support/integration_helpers.rb
376
+ - test/support/mongoid.yml
377
+ - test/test_compatibility.rb
378
+ - test/test_complexity_validator.rb
334
379
  - test/test_helper.rb
335
380
  - test/test_install_generator.rb
336
381
  - test/test_paranoid_verification.rb
337
382
  - test/test_password_archivable.rb
338
383
  - test/test_password_expirable.rb
339
- - test/test_password_expired_controller.rb
340
384
  - test/test_secure_validatable.rb
341
- - test/test_security_question_controller.rb
385
+ - test/test_session_limitable.rb
386
+ - test/tmp/config/initializers/devise-security.rb
387
+ - test/tmp/config/locales/devise.security_extension.by.yml
388
+ - test/tmp/config/locales/devise.security_extension.cs.yml
389
+ - test/tmp/config/locales/devise.security_extension.de.yml
390
+ - test/tmp/config/locales/devise.security_extension.en.yml
391
+ - test/tmp/config/locales/devise.security_extension.es.yml
392
+ - test/tmp/config/locales/devise.security_extension.fa.yml
393
+ - test/tmp/config/locales/devise.security_extension.fr.yml
394
+ - test/tmp/config/locales/devise.security_extension.hi.yml
395
+ - test/tmp/config/locales/devise.security_extension.it.yml
396
+ - test/tmp/config/locales/devise.security_extension.ja.yml
397
+ - test/tmp/config/locales/devise.security_extension.nl.yml
398
+ - test/tmp/config/locales/devise.security_extension.pt.yml
399
+ - test/tmp/config/locales/devise.security_extension.ru.yml
400
+ - test/tmp/config/locales/devise.security_extension.tr.yml
401
+ - test/tmp/config/locales/devise.security_extension.uk.yml
402
+ - test/tmp/config/locales/devise.security_extension.zh_CN.yml
403
+ - test/tmp/config/locales/devise.security_extension.zh_TW.yml
342
404
  homepage: https://github.com/devise-security/devise-security
343
405
  licenses:
344
406
  - MIT
345
407
  metadata: {}
346
- post_install_message:
408
+ post_install_message:
347
409
  rdoc_options: []
348
410
  require_paths:
349
411
  - lib
@@ -351,57 +413,120 @@ required_ruby_version: !ruby/object:Gem::Requirement
351
413
  requirements:
352
414
  - - ">="
353
415
  - !ruby/object:Gem::Version
354
- version: 2.2.9
416
+ version: 2.3.0
355
417
  required_rubygems_version: !ruby/object:Gem::Requirement
356
418
  requirements:
357
419
  - - ">="
358
420
  - !ruby/object:Gem::Version
359
421
  version: '0'
360
422
  requirements: []
361
- rubyforge_project:
362
- rubygems_version: 2.7.6
363
- signing_key:
423
+ rubygems_version: 3.0.9
424
+ signing_key:
364
425
  specification_version: 4
365
426
  summary: Security extension for devise
366
427
  test_files:
367
- - test/dummy/Rakefile
428
+ - test/test_password_archivable.rb
429
+ - test/dummy/app/mongoid/shim.rb
430
+ - test/dummy/app/mongoid/user_on_main_app.rb
431
+ - test/dummy/app/mongoid/user_on_engine.rb
432
+ - test/dummy/app/mongoid/one_user.rb
433
+ - test/dummy/app/mongoid/admin.rb
434
+ - test/dummy/app/mongoid/user_with_validations.rb
435
+ - test/dummy/app/mongoid/user_without_email.rb
436
+ - test/dummy/app/models/mongoid/password_archivable_fields.rb
437
+ - test/dummy/app/models/mongoid/registerable_fields.rb
438
+ - test/dummy/app/models/mongoid/mappings.rb
439
+ - test/dummy/app/models/mongoid/session_limitable_fields.rb
440
+ - test/dummy/app/models/mongoid/timeoutable_fields.rb
441
+ - test/dummy/app/models/mongoid/paranoid_verification_fields.rb
442
+ - test/dummy/app/models/mongoid/confirmable_fields.rb
443
+ - test/dummy/app/models/mongoid/password_expirable_fields.rb
444
+ - test/dummy/app/models/mongoid/expirable_fields.rb
445
+ - test/dummy/app/models/mongoid/database_authenticable_fields.rb
446
+ - test/dummy/app/models/mongoid/secure_validatable_fields.rb
447
+ - test/dummy/app/models/mongoid/rememberable_fields.rb
448
+ - test/dummy/app/models/mongoid/lockable_fields.rb
449
+ - test/dummy/app/models/mongoid/security_questionable_fields.rb
450
+ - test/dummy/app/models/mongoid/validatable_fields.rb
451
+ - test/dummy/app/models/mongoid/trackable_fields.rb
452
+ - test/dummy/app/models/mongoid/recoverable_fields.rb
453
+ - test/dummy/app/models/mongoid/omniauthable_fields.rb
454
+ - test/dummy/app/models/security_question_user.rb
455
+ - test/dummy/app/models/application_user_record.rb
456
+ - test/dummy/app/models/secure_user.rb
457
+ - test/dummy/app/models/widget.rb
458
+ - test/dummy/app/models/application_record.rb
459
+ - test/dummy/app/models/captcha_user.rb
460
+ - test/dummy/app/models/user.rb
368
461
  - test/dummy/app/controllers/application_controller.rb
369
462
  - test/dummy/app/controllers/captcha/sessions_controller.rb
370
463
  - test/dummy/app/controllers/foos_controller.rb
464
+ - test/dummy/app/controllers/widgets_controller.rb
371
465
  - test/dummy/app/controllers/security_question/unlocks_controller.rb
372
- - test/dummy/app/models/.gitkeep
373
- - test/dummy/app/models/application_record.rb
374
- - 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
- - test/dummy/app/models/user.rb
378
- - test/dummy/app/models/widget.rb
379
466
  - test/dummy/app/views/foos/index.html.erb
380
- - test/dummy/config.ru
467
+ - test/dummy/app/assets/config/manifest.js
468
+ - test/dummy/config/secrets.yml
469
+ - test/dummy/config/routes.rb
470
+ - test/dummy/config/mongoid.yml
471
+ - test/dummy/config/environments/test.rb
472
+ - test/dummy/config/environment.rb
381
473
  - test/dummy/config/application.rb
382
- - test/dummy/config/boot.rb
383
474
  - 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
475
+ - test/dummy/config/boot.rb
387
476
  - test/dummy/config/initializers/migration_class.rb
388
- - test/dummy/config/routes.rb
389
- - test/dummy/config/secrets.yml
477
+ - test/dummy/config/initializers/devise.rb
478
+ - test/dummy/config.ru
479
+ - test/dummy/Rakefile
480
+ - test/dummy/lib/shared_verification_fields.rb
481
+ - test/dummy/lib/shared_user.rb
482
+ - test/dummy/lib/shared_user_without_email.rb
483
+ - test/dummy/lib/shared_user_without_omniauth.rb
484
+ - test/dummy/lib/shared_user_with_password_verification.rb
485
+ - test/dummy/lib/shared_expirable_columns.rb
486
+ - test/dummy/lib/shared_security_questions_fields.rb
390
487
  - test/dummy/db/migrate/20120508165529_create_tables.rb
391
488
  - test/dummy/db/migrate/20150402165590_add_verification_columns.rb
392
- - test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb
489
+ - test/dummy/db/migrate/20180318111336_add_recoverable_columns.rb
490
+ - test/dummy/db/migrate/20180318105732_add_rememberable_columns.rb
393
491
  - test/dummy/db/migrate/20160320162345_add_security_questions_fields.rb
492
+ - test/dummy/db/migrate/20180319114023_add_widget.rb
394
493
  - test/dummy/db/migrate/20180318103603_add_expireable_columns.rb
494
+ - test/dummy/db/migrate/20150407162345_add_verification_attempt_column.rb
395
495
  - 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
496
+ - test/dummy/log/test.log
497
+ - test/dummy/log/development.log
401
498
  - test/test_install_generator.rb
402
499
  - test/test_paranoid_verification.rb
403
- - test/test_password_archivable.rb
404
- - test/test_password_expirable.rb
405
- - test/test_password_expired_controller.rb
500
+ - test/integration/test_session_limitable_workflow.rb
501
+ - test/integration/test_password_expirable_workflow.rb
406
502
  - test/test_secure_validatable.rb
407
- - test/test_security_question_controller.rb
503
+ - test/test_session_limitable.rb
504
+ - test/support/mongoid.yml
505
+ - test/support/integration_helpers.rb
506
+ - test/test_helper.rb
507
+ - test/orm/mongoid.rb
508
+ - test/orm/active_record.rb
509
+ - test/test_compatibility.rb
510
+ - test/test_password_expirable.rb
511
+ - test/controllers/test_security_question_controller.rb
512
+ - test/controllers/test_captcha_controller.rb
513
+ - test/controllers/test_password_expired_controller.rb
514
+ - test/tmp/config/locales/devise.security_extension.by.yml
515
+ - test/tmp/config/locales/devise.security_extension.nl.yml
516
+ - test/tmp/config/locales/devise.security_extension.tr.yml
517
+ - test/tmp/config/locales/devise.security_extension.ru.yml
518
+ - test/tmp/config/locales/devise.security_extension.fr.yml
519
+ - test/tmp/config/locales/devise.security_extension.fa.yml
520
+ - test/tmp/config/locales/devise.security_extension.hi.yml
521
+ - test/tmp/config/locales/devise.security_extension.ja.yml
522
+ - test/tmp/config/locales/devise.security_extension.en.yml
523
+ - test/tmp/config/locales/devise.security_extension.pt.yml
524
+ - test/tmp/config/locales/devise.security_extension.it.yml
525
+ - test/tmp/config/locales/devise.security_extension.de.yml
526
+ - test/tmp/config/locales/devise.security_extension.es.yml
527
+ - test/tmp/config/locales/devise.security_extension.zh_CN.yml
528
+ - test/tmp/config/locales/devise.security_extension.uk.yml
529
+ - test/tmp/config/locales/devise.security_extension.zh_TW.yml
530
+ - test/tmp/config/locales/devise.security_extension.cs.yml
531
+ - test/tmp/config/initializers/devise-security.rb
532
+ - test/test_complexity_validator.rb
data/.circleci/config.yml DELETED
@@ -1,41 +0,0 @@
1
- # Ruby CircleCI 2.0 configuration file
2
- #
3
- # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
- #
5
- version: 2
6
- jobs:
7
- build:
8
- docker:
9
- # specify the version you desire here
10
- - image: circleci/ruby:2.4.1-node-browsers
11
-
12
- # Specify service dependencies here if necessary
13
- # CircleCI maintains a library of pre-built images
14
- # documented at https://circleci.com/docs/2.0/circleci-images/
15
- # - image: circleci/postgres:9.4
16
-
17
- working_directory: ~/repo
18
-
19
- steps:
20
- - checkout
21
-
22
- # Download and cache dependencies
23
- - restore_cache:
24
- keys:
25
- # fallback to using the latest cache if no exact match is found
26
- - v1-dependencies-
27
-
28
- - run:
29
- name: install dependencies
30
- command: |
31
- bundle install --jobs=4 --retry=3 --path vendor/bundle
32
-
33
- - save_cache:
34
- paths:
35
- - ./vendor/bundle
36
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
37
-
38
- # run tests!
39
- - run:
40
- name: run tests
41
- command: bundle exec rake
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.gitignore DELETED
@@ -1,40 +0,0 @@
1
- test/rails_app/log/*
2
- test/rails_app/tmp/*
3
- *~
4
- coverage/*
5
- *.sqlite3
6
- .bundle
7
- rdoc/*
8
- pkg
9
- # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
10
- #
11
- # * Create a file at ~/.gitignore
12
- # * Include files you want ignored
13
- # * Run: git config --global core.excludesfile ~/.gitignore
14
- #
15
- # After doing this, these files will be ignored in all your git projects,
16
- # saving you from having to 'pollute' every project you touch with them
17
- #
18
- # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
19
- #
20
- # For MacOS:
21
- #
22
- #.DS_Store
23
- #
24
- # For TextMate
25
- #*.tmproj
26
- #tmtags
27
- #
28
- # For emacs:
29
- #*~
30
- #\#*
31
- #.\#*
32
- #
33
- # For vim:
34
- #*.swp
35
-
36
- log
37
- test/tmp/*
38
- *.gem
39
- Gemfile.lock
40
- *.lock