two_factor_authentication 1.1.3 → 2.2.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +21 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +295 -0
  5. data/.travis.yml +14 -7
  6. data/CHANGELOG.md +119 -0
  7. data/Gemfile +12 -3
  8. data/README.md +320 -58
  9. data/app/controllers/devise/two_factor_authentication_controller.rb +65 -25
  10. data/app/views/devise/two_factor_authentication/show.html.erb +11 -2
  11. data/config/locales/en.yml +1 -0
  12. data/config/locales/es.yml +8 -0
  13. data/config/locales/fr.yml +8 -0
  14. data/config/locales/ru.yml +1 -0
  15. data/lib/generators/active_record/templates/migration.rb +9 -11
  16. data/lib/two_factor_authentication/controllers/helpers.rb +3 -3
  17. data/lib/two_factor_authentication/hooks/two_factor_authenticatable.rb +12 -2
  18. data/lib/two_factor_authentication/models/two_factor_authenticatable.rb +158 -29
  19. data/lib/two_factor_authentication/orm/active_record.rb +2 -0
  20. data/lib/two_factor_authentication/routes.rb +3 -1
  21. data/lib/two_factor_authentication/schema.rb +24 -4
  22. data/lib/two_factor_authentication/version.rb +1 -1
  23. data/lib/two_factor_authentication.rb +20 -3
  24. data/spec/controllers/two_factor_authentication_controller_spec.rb +41 -0
  25. data/spec/features/two_factor_authenticatable_spec.rb +179 -30
  26. data/spec/generators/active_record/two_factor_authentication_generator_spec.rb +36 -0
  27. data/spec/lib/two_factor_authentication/models/two_factor_authenticatable_spec.rb +272 -114
  28. data/spec/rails_app/app/controllers/home_controller.rb +1 -1
  29. data/spec/rails_app/app/models/admin.rb +6 -0
  30. data/spec/rails_app/app/models/encrypted_user.rb +15 -0
  31. data/spec/rails_app/app/models/guest_user.rb +8 -1
  32. data/spec/rails_app/app/models/user.rb +3 -4
  33. data/spec/rails_app/config/environments/test.rb +10 -1
  34. data/spec/rails_app/config/initializers/devise.rb +5 -3
  35. data/spec/rails_app/config/routes.rb +1 -0
  36. data/spec/rails_app/db/migrate/20140403184646_devise_create_users.rb +2 -2
  37. data/spec/rails_app/db/migrate/20140407172619_two_factor_authentication_add_to_users.rb +1 -1
  38. data/spec/rails_app/db/migrate/20140407215513_add_nickanme_to_users.rb +1 -1
  39. data/spec/rails_app/db/migrate/20151224171231_add_encrypted_columns_to_user.rb +9 -0
  40. data/spec/rails_app/db/migrate/20151224180310_populate_otp_column.rb +19 -0
  41. data/spec/rails_app/db/migrate/20151228230340_remove_otp_secret_key_from_user.rb +5 -0
  42. data/spec/rails_app/db/migrate/20160209032439_devise_create_admins.rb +42 -0
  43. data/spec/rails_app/db/schema.rb +35 -18
  44. data/spec/spec_helper.rb +4 -0
  45. data/spec/support/authenticated_model_helper.rb +33 -2
  46. data/spec/support/controller_helper.rb +16 -0
  47. data/spec/support/features_spec_helper.rb +24 -1
  48. data/spec/support/totp_helper.rb +11 -0
  49. data/two_factor_authentication.gemspec +4 -2
  50. metadata +133 -30
  51. data/spec/controllers/two_factor_auth_spec.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb84a503671c99963674feb9a48b9e0b4078c457
4
- data.tar.gz: e1004e05b1adfb4fc9dbae58638f3091a29cd4c9
3
+ metadata.gz: 3d6d6636a281220ef8fd5aee19a4c4aaa4129797
4
+ data.tar.gz: 4954c89fa183dcb47c3104bfb14035ceaf6d20f4
5
5
  SHA512:
6
- metadata.gz: 7f790fd330b74c0bed8199477a23dce4d52d5035c86495a62d2d5e5b0bc77f5d97c4cea8b6b9aee5a6b3b306d9d45664fb95b5a0c3ca89838b3a832302de1590
7
- data.tar.gz: 48d79bca0d7eb2f51ed606d4c34aea8b7f7d01cf0c2e59e763a0fd6eaad167dbc53c4c7db495bc0931fa6b061c4a095a6d521b868334eeaf77267538861b3cf6
6
+ metadata.gz: c559cf0c9c2c21519efdf25ce615ca5930dfc657564e4209b77298944ea3a2342414e7772b493db65c657c617641d0af4398a31bca0d3fbf81025e417fb688c2
7
+ data.tar.gz: 7e0d5abb909bb53f04d3d0cb887a4e869944eda656318c7e782562ecdf7bd635c8079d144506b1633e71c83368604b989dd9b4a21f2d8c21cb41d1f2849b3b58
data/.codeclimate.yml ADDED
@@ -0,0 +1,21 @@
1
+ engines:
2
+ brakeman:
3
+ enabled: true
4
+ duplication:
5
+ enabled: true
6
+ config:
7
+ languages:
8
+ - ruby
9
+ # mass_threshold: 30
10
+ exclude_paths:
11
+ - 'spec/**/*'
12
+ fixme:
13
+ enabled: true
14
+ rubocop:
15
+ enabled: true
16
+
17
+ ratings:
18
+ paths:
19
+ - app/**
20
+ - lib/**
21
+ - '**.rb'
data/.gitignore CHANGED
@@ -19,3 +19,5 @@ capybara-*.html
19
19
  dump.rdb
20
20
  *.ids
21
21
  .rbenv-version
22
+ .ruby-gemset
23
+ .ruby-version
data/.rubocop.yml ADDED
@@ -0,0 +1,295 @@
1
+ AllCops:
2
+ Include:
3
+ - '**/Gemfile'
4
+ - '**/Rakefile'
5
+ UseCache: true
6
+
7
+ Lint/AssignmentInCondition:
8
+ Description: Don't use assignment in conditions.
9
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
10
+ Enabled: true
11
+ AllowSafeAssignment: true
12
+ Lint/EachWithObjectArgument:
13
+ Description: Check for immutable argument given to each_with_object.
14
+ Enabled: true
15
+ Lint/HandleExceptions:
16
+ Description: Don't suppress exception.
17
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
18
+ Enabled: true
19
+ Lint/LiteralInCondition:
20
+ Description: Checks of literals used in conditions.
21
+ Enabled: true
22
+ Lint/LiteralInInterpolation:
23
+ Description: Checks for literals used in interpolation.
24
+ Enabled: true
25
+ Lint/ParenthesesAsGroupedExpression:
26
+ Description: Checks for method calls with a space before the opening parenthesis.
27
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces
28
+ Enabled: true
29
+
30
+ Metrics/AbcSize:
31
+ Description: A calculated magnitude based on number of assignments, branches, and
32
+ conditions.
33
+ Enabled: true
34
+ Max: 15
35
+ Exclude:
36
+ - spec/**/*
37
+ Metrics/ClassLength:
38
+ Description: Avoid classes longer than 100 lines of code.
39
+ Enabled: true
40
+ CountComments: false
41
+ Max: 100
42
+ Exclude:
43
+ - spec/**/*
44
+ Metrics/CyclomaticComplexity:
45
+ Description: A complexity metric that is strongly correlated to the number of test
46
+ cases needed to validate a method.
47
+ Enabled: true
48
+ Max: 6
49
+ Metrics/LineLength:
50
+ Description: Limit lines to 80 characters.
51
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#80-character-limits
52
+ Enabled: true
53
+ Max: 100
54
+ AllowURI: true
55
+ URISchemes:
56
+ - http
57
+ - https
58
+ Metrics/MethodLength:
59
+ Description: Avoid methods longer than 10 lines of code.
60
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
61
+ Enabled: true
62
+ CountComments: false
63
+ Max: 10
64
+ Exclude:
65
+ - spec/**/*
66
+ Metrics/ModuleLength:
67
+ CountComments: false
68
+ Max: 100
69
+ Description: Avoid modules longer than 100 lines of code.
70
+ Enabled: true
71
+ Exclude:
72
+ - spec/**/*
73
+ Metrics/ParameterLists:
74
+ Description: Avoid parameter lists longer than three or four parameters.
75
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
76
+ Enabled: true
77
+ Max: 5
78
+ CountKeywordArgs: true
79
+ Metrics/PerceivedComplexity:
80
+ Description: A complexity metric geared towards measuring complexity for a human
81
+ reader.
82
+ Enabled: true
83
+ Max: 7
84
+
85
+ Rails/ScopeArgs:
86
+ Description: Checks the arguments of ActiveRecord scopes.
87
+ Enabled: true
88
+ Rails/TimeZone:
89
+ # The value `strict` means that `Time` should be used with `zone`.
90
+ # The value `flexible` allows usage of `in_time_zone` instead of `zone`.
91
+ Enabled: true
92
+ EnforcedStyle: flexible
93
+ SupportedStyles:
94
+ - strict
95
+ - flexible
96
+
97
+ Style/AccessorMethodName:
98
+ Description: Check the naming of accessor methods for get_/set_.
99
+ Enabled: false
100
+ Style/AndOr:
101
+ Description: Use &&/|| instead of and/or.
102
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-and-or-or
103
+ Enabled: true
104
+ EnforcedStyle: conditionals
105
+ SupportedStyles:
106
+ - always
107
+ - conditionals
108
+ Style/Alias:
109
+ Description: Use alias_method instead of alias.
110
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
111
+ Enabled: true
112
+ Style/ClassAndModuleChildren:
113
+ EnforcedStyle: nested
114
+ SupportedStyles:
115
+ - nested
116
+ - compact
117
+ Style/CollectionMethods:
118
+ Description: Preferred collection methods.
119
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
120
+ Enabled: true
121
+ PreferredMethods:
122
+ collect: map
123
+ collect!: map!
124
+ find: detect
125
+ find_all: select
126
+ reduce: inject
127
+ Style/Documentation:
128
+ Description: Document classes and non-namespace modules.
129
+ Enabled: false
130
+ Style/DotPosition:
131
+ Description: Checks the position of the dot in multi-line method calls.
132
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
133
+ Enabled: true
134
+ EnforcedStyle: trailing
135
+ SupportedStyles:
136
+ - leading
137
+ - trailing
138
+ Style/DoubleNegation:
139
+ Description: Checks for uses of double negation (!!).
140
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang
141
+ Enabled: true
142
+ Style/EachWithObject:
143
+ Description: Prefer `each_with_object` over `inject` or `reduce`.
144
+ Enabled: true
145
+ Style/EmptyLiteral:
146
+ Description: Prefer literals to Array.new/Hash.new/String.new.
147
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
148
+ Enabled: true
149
+ Style/FileName:
150
+ Description: Use snake_case for source file names.
151
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
152
+ Enabled: true
153
+ Exclude: []
154
+ Style/GuardClause:
155
+ Description: Check for conditionals that can be replaced with guard clauses
156
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
157
+ Enabled: true
158
+ MinBodyLength: 1
159
+ Style/IfUnlessModifier:
160
+ Description: Favor modifier if/unless usage when you have a single-line body.
161
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
162
+ Enabled: false
163
+ MaxLineLength: 80
164
+ Style/InlineComment:
165
+ Description: Avoid inline comments.
166
+ Enabled: false
167
+ Style/ModuleFunction:
168
+ Description: Checks for usage of `extend self` in modules.
169
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
170
+ Enabled: false
171
+ Style/OneLineConditional:
172
+ Description: Favor the ternary operator(?:) over if/then/else/end constructs.
173
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
174
+ Enabled: false
175
+ Style/OptionHash:
176
+ Description: Don't use option hashes when you can use keyword arguments.
177
+ Enabled: false
178
+ Style/PercentLiteralDelimiters:
179
+ Description: Use `%`-literal delimiters consistently
180
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
181
+ Enabled: true
182
+ PreferredDelimiters:
183
+ "%": "()"
184
+ "%i": "()"
185
+ "%q": "()"
186
+ "%Q": "()"
187
+ "%r": "{}"
188
+ "%s": "()"
189
+ "%w": "()"
190
+ "%W": "()"
191
+ "%x": "()"
192
+ Style/PerlBackrefs:
193
+ Description: Avoid Perl-style regex back references.
194
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
195
+ Enabled: false
196
+ Style/PredicateName:
197
+ Description: Check the names of predicate methods.
198
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
199
+ Enabled: true
200
+ NamePrefix:
201
+ - is_
202
+ - has_
203
+ - have_
204
+ NamePrefixBlacklist:
205
+ - is_
206
+ Exclude:
207
+ - spec/**/*
208
+ Style/RaiseArgs:
209
+ Description: Checks the arguments passed to raise/fail.
210
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages
211
+ Enabled: true
212
+ EnforcedStyle: exploded
213
+ SupportedStyles:
214
+ - compact
215
+ - exploded
216
+ Style/Send:
217
+ Description: Prefer `Object#__send__` or `Object#public_send` to `send`, as `send`
218
+ may overlap with existing methods.
219
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#prefer-public-send
220
+ Enabled: false
221
+ Style/SignalException:
222
+ Description: Checks for proper usage of fail and raise.
223
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
224
+ Enabled: true
225
+ EnforcedStyle: semantic
226
+ SupportedStyles:
227
+ - only_raise
228
+ - only_fail
229
+ - semantic
230
+ Style/SingleLineBlockParams:
231
+ Description: Enforces the names of some block params.
232
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
233
+ Enabled: true
234
+ Methods:
235
+ - reduce:
236
+ - a
237
+ - e
238
+ - inject:
239
+ - a
240
+ - e
241
+ Style/SingleLineMethods:
242
+ Description: Avoid single-line methods.
243
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
244
+ Enabled: true
245
+ AllowIfMethodIsEmpty: true
246
+ Style/SpecialGlobalVars:
247
+ Description: Avoid Perl-style global variables.
248
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
249
+ Enabled: false
250
+ Style/StringLiterals:
251
+ Description: Checks if uses of quotes match the configured preference.
252
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
253
+ Enabled: true
254
+ EnforcedStyle: single_quotes
255
+ SupportedStyles:
256
+ - single_quotes
257
+ - double_quotes
258
+ Style/StringLiteralsInInterpolation:
259
+ Description: Checks if uses of quotes inside expressions in interpolated strings
260
+ match the configured preference.
261
+ Enabled: true
262
+ EnforcedStyle: single_quotes
263
+ SupportedStyles:
264
+ - single_quotes
265
+ - double_quotes
266
+ Style/TrailingCommaInArguments:
267
+ Description: 'Checks for trailing comma in argument lists.'
268
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
269
+ Enabled: true
270
+ EnforcedStyleForMultiline: no_comma
271
+ SupportedStyles:
272
+ - comma
273
+ - consistent_comma
274
+ - no_comma
275
+ Style/TrailingCommaInLiteral:
276
+ Description: 'Checks for trailing comma in array and hash literals.'
277
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
278
+ Enabled: true
279
+ EnforcedStyleForMultiline: no_comma
280
+ SupportedStyles:
281
+ - comma
282
+ - consistent_comma
283
+ - no_comma
284
+ Style/VariableInterpolation:
285
+ Description: Don't interpolate global, instance and class variables directly in
286
+ strings.
287
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
288
+ Enabled: false
289
+ Style/WhenThen:
290
+ Description: Use when x then ... for one-line cases.
291
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
292
+ Enabled: false
293
+ Style/ZeroLengthPredicate:
294
+ Description: 'Use #empty? when testing for objects of length 0.'
295
+ Enabled: true
data/.travis.yml CHANGED
@@ -1,21 +1,28 @@
1
1
  language: ruby
2
2
 
3
3
  env:
4
- - "RAILS_VERSION=3.2.0"
5
- - "RAILS_VERSION=4.0.0"
6
- - "RAILS_VERSION=4.1.1"
4
+ - "RAILS_VERSION=4.2"
5
+ - "RAILS_VERSION=5.2"
7
6
  - "RAILS_VERSION=master"
8
7
 
9
8
  rvm:
10
- - 1.9.3
11
- - 2.0
12
- - 2.1
9
+ - 2.3.8
10
+ - 2.4.5
11
+ - 2.5.3
13
12
 
14
13
  matrix:
14
+ fast_finish: true
15
15
  allow_failures:
16
16
  - env: "RAILS_VERSION=master"
17
+ include:
18
+ - rvm: 2.2
19
+ env: RAILS_VERSION=4.2
20
+
21
+ before_install:
22
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
23
+ - gem install bundler -v '< 2'
17
24
 
18
25
  before_script:
19
- - bundle exec rake app:db:migrate
26
+ - bundle exec rake app:db:setup
20
27
 
21
28
  script: bundle exec rake spec
data/CHANGELOG.md ADDED
@@ -0,0 +1,119 @@
1
+ # Change Log
2
+
3
+ ## [Unreleased](https://github.com/Houdini/two_factor_authentication/tree/HEAD)
4
+
5
+ [Full Changelog](https://github.com/Houdini/two_factor_authentication/compare/v1.1.5...HEAD)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Fix class detection in reset\_otp\_state\_for\(user\) [\#69](https://github.com/Houdini/two_factor_authentication/pull/69) ([monfresh](https://github.com/monfresh))
10
+ - Add ability to resend code [\#52](https://github.com/Houdini/two_factor_authentication/pull/52) ([iDiogenes](https://github.com/iDiogenes))
11
+
12
+ ## [v1.1.5](https://github.com/Houdini/two_factor_authentication/tree/v1.1.5) (2016-02-01)
13
+ [Full Changelog](https://github.com/Houdini/two_factor_authentication/compare/v1.1.4...v1.1.5)
14
+
15
+ **Closed issues:**
16
+
17
+ - How should I integrate Devise two factor authentication with custom sessions controller? [\#60](https://github.com/Houdini/two_factor_authentication/issues/60)
18
+
19
+ **Merged pull requests:**
20
+
21
+ - added french translation [\#68](https://github.com/Houdini/two_factor_authentication/pull/68) ([qsypoq](https://github.com/qsypoq))
22
+ - Drop support for Ruby 1.9.3 & update .travis.yml [\#67](https://github.com/Houdini/two_factor_authentication/pull/67) ([monfresh](https://github.com/monfresh))
23
+ - Fix reset\_otp\_state specs [\#66](https://github.com/Houdini/two_factor_authentication/pull/66) ([monfresh](https://github.com/monfresh))
24
+ - Add a CHANGELOG.md [\#65](https://github.com/Houdini/two_factor_authentication/pull/65) ([monfresh](https://github.com/monfresh))
25
+ - Update bundler on Travis before installing gems [\#63](https://github.com/Houdini/two_factor_authentication/pull/63) ([monfresh](https://github.com/monfresh))
26
+ - Add support for OTP secret key encryption [\#62](https://github.com/Houdini/two_factor_authentication/pull/62) ([monfresh](https://github.com/monfresh))
27
+ - Allow executing code after sign in and before sign out [\#61](https://github.com/Houdini/two_factor_authentication/pull/61) ([monfresh](https://github.com/monfresh))
28
+
29
+ ## [v1.1.4](https://github.com/Houdini/two_factor_authentication/tree/v1.1.4) (2016-01-01)
30
+ [Full Changelog](https://github.com/Houdini/two_factor_authentication/compare/v1.1.3...v1.1.4)
31
+
32
+ **Closed issues:**
33
+
34
+ - Old OTP can be used after a new one has been generated [\#59](https://github.com/Houdini/two_factor_authentication/issues/59)
35
+ - Do we have any two\_factor\_method like authenticate\_user! [\#58](https://github.com/Houdini/two_factor_authentication/issues/58)
36
+ - Configuration [\#57](https://github.com/Houdini/two_factor_authentication/issues/57)
37
+
38
+ **Merged pull requests:**
39
+
40
+ - Abstract logic for two factor success and fail into separate methods.… [\#56](https://github.com/Houdini/two_factor_authentication/pull/56) ([kpheasey](https://github.com/kpheasey))
41
+ - Move require rotp library to the file where it is used [\#55](https://github.com/Houdini/two_factor_authentication/pull/55) ([gkopylov](https://github.com/gkopylov))
42
+ - Add support for remembering a user's 2FA session in a cookie [\#54](https://github.com/Houdini/two_factor_authentication/pull/54) ([boffbowsh](https://github.com/boffbowsh))
43
+ - Test against Ruby 2.2 and Rails 4.2 [\#53](https://github.com/Houdini/two_factor_authentication/pull/53) ([boffbowsh](https://github.com/boffbowsh))
44
+ - Eliminates appended '?' to redirects that have no query string [\#46](https://github.com/Houdini/two_factor_authentication/pull/46) ([daveriess](https://github.com/daveriess))
45
+
46
+ ## [v1.1.3](https://github.com/Houdini/two_factor_authentication/tree/v1.1.3) (2014-12-14)
47
+ [Full Changelog](https://github.com/Houdini/two_factor_authentication/compare/v1.1.2...v1.1.3)
48
+
49
+ **Closed issues:**
50
+
51
+ - rails g two\_factor\_authentication MODEL does not append .rb to end of migration [\#40](https://github.com/Houdini/two_factor_authentication/issues/40)
52
+
53
+ **Merged pull requests:**
54
+
55
+ - Allows length of OTP to be configured [\#44](https://github.com/Houdini/two_factor_authentication/pull/44) ([amoose](https://github.com/amoose))
56
+ - Missing translation. [\#43](https://github.com/Houdini/two_factor_authentication/pull/43) ([sadfuzzy](https://github.com/sadfuzzy))
57
+ - Preserve query parameters in \_return\_to for redirect. [\#42](https://github.com/Houdini/two_factor_authentication/pull/42) ([omb-awong](https://github.com/omb-awong))
58
+ - Add file extension to ActiveRecord generator [\#41](https://github.com/Houdini/two_factor_authentication/pull/41) ([jackturnbull](https://github.com/jackturnbull))
59
+
60
+ ## [v1.1.2](https://github.com/Houdini/two_factor_authentication/tree/v1.1.2) (2014-07-14)
61
+ [Full Changelog](https://github.com/Houdini/two_factor_authentication/compare/v1.1.1...v1.1.2)
62
+
63
+ **Closed issues:**
64
+
65
+ - NoMethodError \(undefined method `scan' for nil:NilClass\) [\#37](https://github.com/Houdini/two_factor_authentication/issues/37)
66
+
67
+ **Merged pull requests:**
68
+
69
+ - Updated readme with rake task to update existing users with OTP secret k... [\#39](https://github.com/Houdini/two_factor_authentication/pull/39) ([Znow](https://github.com/Znow))
70
+ - Updated readme with view overriding [\#38](https://github.com/Houdini/two_factor_authentication/pull/38) ([Znow](https://github.com/Znow))
71
+
72
+ ## [v1.1.1](https://github.com/Houdini/two_factor_authentication/tree/v1.1.1) (2014-05-31)
73
+ [Full Changelog](https://github.com/Houdini/two_factor_authentication/compare/v1.1...v1.1.1)
74
+
75
+ **Closed issues:**
76
+
77
+ - Override views [\#36](https://github.com/Houdini/two_factor_authentication/issues/36)
78
+ - NoMethodError in Devise::TwoFactorAuthenticationController\#update [\#30](https://github.com/Houdini/two_factor_authentication/issues/30)
79
+
80
+ **Merged pull requests:**
81
+
82
+ - Use Strings and not Symbols for keys when storing variable in warden session [\#35](https://github.com/Houdini/two_factor_authentication/pull/35) ([karolsarnacki](https://github.com/karolsarnacki))
83
+ - Chore/extract reused hash key [\#34](https://github.com/Houdini/two_factor_authentication/pull/34) ([rud](https://github.com/rud))
84
+ - Pad OTP codes with less than 6 digits [\#31](https://github.com/Houdini/two_factor_authentication/pull/31) ([brissmyr](https://github.com/brissmyr))
85
+
86
+ ## [v1.1](https://github.com/Houdini/two_factor_authentication/tree/v1.1) (2014-04-16)
87
+ **Closed issues:**
88
+
89
+ - Update [\#15](https://github.com/Houdini/two_factor_authentication/issues/15)
90
+ - Data in formats other than HTML left unprotected [\#6](https://github.com/Houdini/two_factor_authentication/issues/6)
91
+ - Wordlists [\#5](https://github.com/Houdini/two_factor_authentication/issues/5)
92
+ - devise - wrong number of arguments \(1 for 0\) [\#3](https://github.com/Houdini/two_factor_authentication/issues/3)
93
+ - gem? [\#1](https://github.com/Houdini/two_factor_authentication/issues/1)
94
+
95
+ **Merged pull requests:**
96
+
97
+ - added is\_fully\_authenticated helper for current version [\#28](https://github.com/Houdini/two_factor_authentication/pull/28) ([edg3r](https://github.com/edg3r))
98
+ - Adds integration spec to ensure authentication code is sent on sign in [\#27](https://github.com/Houdini/two_factor_authentication/pull/27) ([rossta](https://github.com/rossta))
99
+ - ensure return\_to location is properly stored [\#26](https://github.com/Houdini/two_factor_authentication/pull/26) ([rossta](https://github.com/rossta))
100
+ - travis badge in README [\#25](https://github.com/Houdini/two_factor_authentication/pull/25) ([rossta](https://github.com/rossta))
101
+ - Integration specs [\#24](https://github.com/Houdini/two_factor_authentication/pull/24) ([rossta](https://github.com/rossta))
102
+ - README updates [\#23](https://github.com/Houdini/two_factor_authentication/pull/23) ([rossta](https://github.com/rossta))
103
+ - extract method \#max\_login\_attempts [\#22](https://github.com/Houdini/two_factor_authentication/pull/22) ([rossta](https://github.com/rossta))
104
+ - extract method \#populate\_otp\_column [\#21](https://github.com/Houdini/two_factor_authentication/pull/21) ([rossta](https://github.com/rossta))
105
+ - specs for Model\#provisioning\_uri [\#20](https://github.com/Houdini/two_factor_authentication/pull/20) ([rossta](https://github.com/rossta))
106
+ - Provide options for \#provisioning\_uri [\#19](https://github.com/Houdini/two_factor_authentication/pull/19) ([rossta](https://github.com/rossta))
107
+ - Use time-based authentication codes [\#16](https://github.com/Houdini/two_factor_authentication/pull/16) ([mattmueller](https://github.com/mattmueller))
108
+ - Add ru locales and locales for max\_limit\_reached view [\#13](https://github.com/Houdini/two_factor_authentication/pull/13) ([edg3r](https://github.com/edg3r))
109
+ - Update README.md [\#11](https://github.com/Houdini/two_factor_authentication/pull/11) ([edg3r](https://github.com/edg3r))
110
+ - Changed route from user to admin\_user [\#10](https://github.com/Houdini/two_factor_authentication/pull/10) ([ilanstern](https://github.com/ilanstern))
111
+ - Changed :notice to :error when setting flash message on attempt failure. [\#9](https://github.com/Houdini/two_factor_authentication/pull/9) ([johnmichaelbradley](https://github.com/johnmichaelbradley))
112
+ - Typo and punctuation corrections. [\#8](https://github.com/Houdini/two_factor_authentication/pull/8) ([johnmichaelbradley](https://github.com/johnmichaelbradley))
113
+ - Respond with 401 for request non-HTML requests [\#7](https://github.com/Houdini/two_factor_authentication/pull/7) ([WojtekKruszewski](https://github.com/WojtekKruszewski))
114
+ - need\_two\_factor\_authentication? method should accept request param. [\#4](https://github.com/Houdini/two_factor_authentication/pull/4) ([VladimirMikhailov](https://github.com/VladimirMikhailov))
115
+ - Add generators to make it easier to install and fix deprecation warnings [\#2](https://github.com/Houdini/two_factor_authentication/pull/2) ([carvil](https://github.com/carvil))
116
+
117
+
118
+
119
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in devise_ip_filter.gemspec
4
4
  gemspec
@@ -9,13 +9,22 @@ rails = case rails_version
9
9
  when "master"
10
10
  {github: "rails/rails"}
11
11
  when "default"
12
- "~> 4.1"
12
+ "~> 5.2"
13
13
  else
14
14
  "~> #{rails_version}"
15
15
  end
16
16
 
17
17
  gem "rails", rails
18
18
 
19
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.2.0')
20
+ gem "test-unit", "~> 3.0"
21
+ end
22
+
23
+ group :test, :development do
24
+ gem 'sqlite3'
25
+ end
26
+
19
27
  group :test do
20
- gem "sqlite3"
28
+ gem 'rack_session_access'
29
+ gem 'ammeter'
21
30
  end