clearance 2.0.0.beta1 → 2.2.1

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.

Potentially problematic release.


This version of clearance might be problematic. Click here for more details.

Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +8 -14
  3. data/Appraisals +11 -3
  4. data/Gemfile +1 -3
  5. data/Gemfile.lock +91 -86
  6. data/NEWS.md +86 -4
  7. data/README.md +54 -28
  8. data/app/controllers/clearance/base_controller.rb +8 -1
  9. data/app/controllers/clearance/passwords_controller.rb +23 -5
  10. data/clearance.gemspec +15 -9
  11. data/config/locales/clearance.en.yml +1 -0
  12. data/config/routes.rb +1 -1
  13. data/gemfiles/rails_5.0.gemfile +3 -3
  14. data/gemfiles/rails_5.1.gemfile +3 -3
  15. data/gemfiles/rails_5.2.gemfile +3 -3
  16. data/gemfiles/{rails_4.2.gemfile → rails_6.0.gemfile} +5 -4
  17. data/lib/clearance/authentication.rb +1 -1
  18. data/lib/clearance/back_door.rb +1 -1
  19. data/lib/clearance/configuration.rb +30 -19
  20. data/lib/clearance/password_strategies.rb +5 -4
  21. data/lib/clearance/password_strategies/argon2.rb +23 -0
  22. data/lib/clearance/password_strategies/bcrypt.rb +17 -11
  23. data/lib/clearance/rack_session.rb +5 -1
  24. data/lib/clearance/session.rb +39 -3
  25. data/lib/clearance/testing/deny_access_matcher.rb +1 -5
  26. data/lib/clearance/user.rb +12 -3
  27. data/lib/clearance/version.rb +1 -1
  28. data/lib/generators/clearance/install/install_generator.rb +11 -7
  29. data/lib/generators/clearance/install/templates/README +10 -4
  30. data/lib/generators/clearance/install/templates/db/migrate/add_clearance_to_users.rb.erb +1 -1
  31. data/lib/generators/clearance/install/templates/db/migrate/create_users.rb.erb +1 -1
  32. data/lib/generators/clearance/routes/templates/routes.rb +1 -1
  33. data/spec/acceptance/clearance_installation_spec.rb +0 -4
  34. data/spec/app_templates/app/models/user.rb +1 -1
  35. data/spec/app_templates/testapp/app/controllers/home_controller.rb +1 -5
  36. data/spec/app_templates/testapp/app/views/layouts/application.html.erb +24 -0
  37. data/spec/clearance/back_door_spec.rb +12 -6
  38. data/spec/clearance/rack_session_spec.rb +2 -0
  39. data/spec/clearance/session_spec.rb +91 -16
  40. data/spec/clearance/testing/deny_access_matcher_spec.rb +32 -0
  41. data/spec/configuration_spec.rb +46 -15
  42. data/spec/controllers/passwords_controller_spec.rb +36 -0
  43. data/spec/controllers/permissions_controller_spec.rb +1 -1
  44. data/spec/dummy/app/controllers/application_controller.rb +1 -5
  45. data/spec/dummy/application.rb +7 -1
  46. data/spec/generators/clearance/install/install_generator_spec.rb +31 -6
  47. data/spec/generators/clearance/views/views_generator_spec.rb +0 -2
  48. data/spec/models/user_spec.rb +34 -5
  49. data/spec/password_strategies/argon2_spec.rb +79 -0
  50. data/spec/password_strategies/bcrypt_spec.rb +18 -1
  51. data/spec/requests/authentication_cookie_spec.rb +55 -0
  52. data/spec/requests/token_expiration_spec.rb +5 -0
  53. data/spec/spec_helper.rb +4 -7
  54. data/spec/support/generator_spec_helpers.rb +1 -9
  55. metadata +52 -26
  56. data/app/views/layouts/application.html.erb +0 -23
  57. data/spec/app_templates/app/models/rails5/user.rb +0 -5
  58. data/spec/support/environment.rb +0 -12
  59. data/spec/support/http_method_shim.rb +0 -25
@@ -3,10 +3,15 @@ require "spec_helper"
3
3
  describe "Token expiration" do
4
4
  describe "after signing in" do
5
5
  before do
6
+ Timecop.freeze
6
7
  create_user_and_sign_in
7
8
  @initial_cookies = remember_token_cookies
8
9
  end
9
10
 
11
+ after do
12
+ Timecop.return
13
+ end
14
+
10
15
  it "should have a remember_token cookie with a future expiration" do
11
16
  expect(first_cookie.expires).to be_between(
12
17
  1.years.from_now - 1.second,
@@ -29,12 +29,10 @@ RSpec.configure do |config|
29
29
 
30
30
  config.before { restore_default_warning_free_config }
31
31
 
32
- if Rails::VERSION::MAJOR >= 5
33
- require 'rails-controller-testing'
34
- config.include Rails::Controller::Testing::TestProcess
35
- config.include Rails::Controller::Testing::TemplateAssertions
36
- config.include Rails::Controller::Testing::Integration
37
- end
32
+ require 'rails-controller-testing'
33
+ config.include Rails::Controller::Testing::TestProcess
34
+ config.include Rails::Controller::Testing::TemplateAssertions
35
+ config.include Rails::Controller::Testing::Integration
38
36
  end
39
37
 
40
38
  Shoulda::Matchers.configure do |config|
@@ -48,5 +46,4 @@ end
48
46
 
49
47
  def restore_default_warning_free_config
50
48
  Clearance.configuration = nil
51
- Clearance.configure { |config| config.rotate_csrf_on_sign_in = true }
52
49
  end
@@ -18,7 +18,7 @@ module GeneratorSpecHelpers
18
18
  end
19
19
 
20
20
  def provide_existing_user_class
21
- copy_to_generator_root("app/models", versionize_template("user.rb"))
21
+ copy_to_generator_root("app/models", "user.rb")
22
22
  allow(File).to receive(:exist?).and_call_original
23
23
  allow(File).to receive(:exist?).with("app/models/user.rb").and_return(true)
24
24
  end
@@ -32,14 +32,6 @@ module GeneratorSpecHelpers
32
32
  FileUtils.mkdir_p(destination)
33
33
  FileUtils.cp(template_file, destination)
34
34
  end
35
-
36
- def versionize_template(template_file)
37
- if Rails.version >= "5.0.0"
38
- template_file = ["rails5", template_file].join("/")
39
- end
40
-
41
- template_file
42
- end
43
35
  end
44
36
 
45
37
  RSpec.configure do |config|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clearance
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta1
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Croak
@@ -22,10 +22,10 @@ authors:
22
22
  - Jason Morrison
23
23
  - Galen Frechette
24
24
  - Josh Steiner
25
- autorequire:
25
+ autorequire:
26
26
  bindir: bin
27
27
  cert_chain: []
28
- date: 2019-04-12 00:00:00.000000000 Z
28
+ date: 2020-08-07 00:00:00.000000000 Z
29
29
  dependencies:
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: bcrypt
@@ -33,85 +33,110 @@ dependencies:
33
33
  requirements:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: '0'
36
+ version: 3.1.1
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: '0'
43
+ version: 3.1.1
44
+ - !ruby/object:Gem::Dependency
45
+ name: argon2
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '2.0'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.0.2
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 2.0.2
44
64
  - !ruby/object:Gem::Dependency
45
65
  name: email_validator
46
66
  requirement: !ruby/object:Gem::Requirement
47
67
  requirements:
48
68
  - - "~>"
49
69
  - !ruby/object:Gem::Version
50
- version: '1.4'
70
+ version: '2.0'
51
71
  type: :runtime
52
72
  prerelease: false
53
73
  version_requirements: !ruby/object:Gem::Requirement
54
74
  requirements:
55
75
  - - "~>"
56
76
  - !ruby/object:Gem::Version
57
- version: '1.4'
77
+ version: '2.0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: railties
60
80
  requirement: !ruby/object:Gem::Requirement
61
81
  requirements:
62
82
  - - ">="
63
83
  - !ruby/object:Gem::Version
64
- version: '4.2'
84
+ version: '5.0'
65
85
  type: :runtime
66
86
  prerelease: false
67
87
  version_requirements: !ruby/object:Gem::Requirement
68
88
  requirements:
69
89
  - - ">="
70
90
  - !ruby/object:Gem::Version
71
- version: '4.2'
91
+ version: '5.0'
72
92
  - !ruby/object:Gem::Dependency
73
93
  name: activemodel
74
94
  requirement: !ruby/object:Gem::Requirement
75
95
  requirements:
76
96
  - - ">="
77
97
  - !ruby/object:Gem::Version
78
- version: '4.2'
98
+ version: '5.0'
79
99
  type: :runtime
80
100
  prerelease: false
81
101
  version_requirements: !ruby/object:Gem::Requirement
82
102
  requirements:
83
103
  - - ">="
84
104
  - !ruby/object:Gem::Version
85
- version: '4.2'
105
+ version: '5.0'
86
106
  - !ruby/object:Gem::Dependency
87
107
  name: activerecord
88
108
  requirement: !ruby/object:Gem::Requirement
89
109
  requirements:
90
110
  - - ">="
91
111
  - !ruby/object:Gem::Version
92
- version: '4.2'
112
+ version: '5.0'
93
113
  type: :runtime
94
114
  prerelease: false
95
115
  version_requirements: !ruby/object:Gem::Requirement
96
116
  requirements:
97
117
  - - ">="
98
118
  - !ruby/object:Gem::Version
99
- version: '4.2'
119
+ version: '5.0'
100
120
  - !ruby/object:Gem::Dependency
101
121
  name: actionmailer
102
122
  requirement: !ruby/object:Gem::Requirement
103
123
  requirements:
104
124
  - - ">="
105
125
  - !ruby/object:Gem::Version
106
- version: '4.2'
126
+ version: '5.0'
107
127
  type: :runtime
108
128
  prerelease: false
109
129
  version_requirements: !ruby/object:Gem::Requirement
110
130
  requirements:
111
131
  - - ">="
112
132
  - !ruby/object:Gem::Version
113
- version: '4.2'
114
- description: Rails authentication & authorization with email & password.
133
+ version: '5.0'
134
+ description: |2
135
+ Clearance is built to support authentication and authorization via an
136
+ email/password sign-in mechanism in applications.
137
+
138
+ It provides some core classes commonly used for these features, along with
139
+ some opinionated defaults - but is intended to be easy to override.
115
140
  email: support@thoughtbot.com
116
141
  executables: []
117
142
  extensions: []
@@ -137,7 +162,6 @@ files:
137
162
  - app/mailers/clearance_mailer.rb
138
163
  - app/views/clearance_mailer/change_password.html.erb
139
164
  - app/views/clearance_mailer/change_password.text.erb
140
- - app/views/layouts/application.html.erb
141
165
  - app/views/passwords/create.html.erb
142
166
  - app/views/passwords/edit.html.erb
143
167
  - app/views/passwords/new.html.erb
@@ -154,10 +178,10 @@ files:
154
178
  - config/routes.rb
155
179
  - db/migrate/20110111224543_create_clearance_users.rb
156
180
  - db/schema.rb
157
- - gemfiles/rails_4.2.gemfile
158
181
  - gemfiles/rails_5.0.gemfile
159
182
  - gemfiles/rails_5.1.gemfile
160
183
  - gemfiles/rails_5.2.gemfile
184
+ - gemfiles/rails_6.0.gemfile
161
185
  - lib/clearance.rb
162
186
  - lib/clearance/authentication.rb
163
187
  - lib/clearance/authorization.rb
@@ -170,6 +194,7 @@ files:
170
194
  - lib/clearance/default_sign_in_guard.rb
171
195
  - lib/clearance/engine.rb
172
196
  - lib/clearance/password_strategies.rb
197
+ - lib/clearance/password_strategies/argon2.rb
173
198
  - lib/clearance/password_strategies/bcrypt.rb
174
199
  - lib/clearance/rack_session.rb
175
200
  - lib/clearance/rspec.rb
@@ -205,12 +230,12 @@ files:
205
230
  - lib/generators/clearance/views/views_generator.rb
206
231
  - spec/acceptance/clearance_installation_spec.rb
207
232
  - spec/app_templates/app/controllers/application_controller.rb
208
- - spec/app_templates/app/models/rails5/user.rb
209
233
  - spec/app_templates/app/models/user.rb
210
234
  - spec/app_templates/config/initializers/clearance.rb
211
235
  - spec/app_templates/config/routes.rb
212
236
  - spec/app_templates/testapp/Gemfile
213
237
  - spec/app_templates/testapp/app/controllers/home_controller.rb
238
+ - spec/app_templates/testapp/app/views/layouts/application.html.erb
214
239
  - spec/app_templates/testapp/config/initializers/action_mailer.rb
215
240
  - spec/app_templates/testapp/config/routes.rb
216
241
  - spec/clearance/back_door_spec.rb
@@ -222,6 +247,7 @@ files:
222
247
  - spec/clearance/session_spec.rb
223
248
  - spec/clearance/sign_in_guard_spec.rb
224
249
  - spec/clearance/testing/controller_helpers_spec.rb
250
+ - spec/clearance/testing/deny_access_matcher_spec.rb
225
251
  - spec/clearance/testing/view_helpers_spec.rb
226
252
  - spec/clearance/token_spec.rb
227
253
  - spec/configuration_spec.rb
@@ -245,8 +271,10 @@ files:
245
271
  - spec/helpers/helper_helpers_spec.rb
246
272
  - spec/mailers/clearance_mailer_spec.rb
247
273
  - spec/models/user_spec.rb
274
+ - spec/password_strategies/argon2_spec.rb
248
275
  - spec/password_strategies/bcrypt_spec.rb
249
276
  - spec/password_strategies/password_strategies_spec.rb
277
+ - spec/requests/authentication_cookie_spec.rb
250
278
  - spec/requests/cookie_options_spec.rb
251
279
  - spec/requests/csrf_rotation_spec.rb
252
280
  - spec/requests/password_maintenance_spec.rb
@@ -255,18 +283,16 @@ files:
255
283
  - spec/spec_helper.rb
256
284
  - spec/support/clearance.rb
257
285
  - spec/support/cookies.rb
258
- - spec/support/environment.rb
259
286
  - spec/support/fake_model_with_password_strategy.rb
260
287
  - spec/support/fake_model_without_password_strategy.rb
261
288
  - spec/support/generator_spec_helpers.rb
262
- - spec/support/http_method_shim.rb
263
289
  - spec/support/request_with_remember_token.rb
264
290
  - spec/views/view_helpers_spec.rb
265
291
  homepage: https://github.com/thoughtbot/clearance
266
292
  licenses:
267
293
  - MIT
268
294
  metadata: {}
269
- post_install_message:
295
+ post_install_message:
270
296
  rdoc_options:
271
297
  - "--charset=UTF-8"
272
298
  require_paths:
@@ -275,15 +301,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
275
301
  requirements:
276
302
  - - ">="
277
303
  - !ruby/object:Gem::Version
278
- version: 2.3.0
304
+ version: 2.4.0
279
305
  required_rubygems_version: !ruby/object:Gem::Requirement
280
306
  requirements:
281
- - - ">"
307
+ - - ">="
282
308
  - !ruby/object:Gem::Version
283
- version: 1.3.1
309
+ version: '0'
284
310
  requirements: []
285
311
  rubygems_version: 3.0.3
286
- signing_key:
312
+ signing_key:
287
313
  specification_version: 4
288
314
  summary: Rails authentication & authorization with email & password.
289
315
  test_files: []
@@ -1,23 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <%= csrf_meta_tag %>
5
- </head>
6
- <body>
7
- <div id="header">
8
- <% if signed_in? -%>
9
- <%= button_to t(".sign_out"), sign_out_path, method: :delete %>
10
- <% else -%>
11
- <%= link_to t(".sign_in"), sign_in_path %>
12
- <% end -%>
13
- </div>
14
-
15
- <div id="flash">
16
- <% flash.each do |key, value| -%>
17
- <div id="flash_<%= key %>"><%=h value %></div>
18
- <% end %>
19
- </div>
20
-
21
- <%= yield %>
22
- </body>
23
- </html>
@@ -1,5 +0,0 @@
1
- class User < ApplicationRecord
2
- def previously_existed?
3
- true
4
- end
5
- end
@@ -1,12 +0,0 @@
1
- module EnvironmentSupport
2
- def with_environment(replacement_env)
3
- original_env = ENV.to_hash
4
- ENV.update(replacement_env)
5
-
6
- begin
7
- yield
8
- ensure
9
- ENV.replace(original_env)
10
- end
11
- end
12
- end
@@ -1,25 +0,0 @@
1
- # Rails 5 deprecates calling HTTP action methods with positional arguments
2
- # in favor of keyword arguments. However, the keyword argument form is only
3
- # supported in Rails 5+. Since we support 4.2, we must give it a shim to massage
4
- # the params into the previous style!
5
-
6
- module PreRailsFiveHTTPMethodShim
7
- def get(path, params: {}, headers: {}, format: :html)
8
- super(path, params.merge(format: format), headers)
9
- end
10
-
11
- def put(path, params: {}, headers: {}, format: :html)
12
- super(path, params.merge(format: format), headers)
13
- end
14
-
15
- def post(path, params: {}, headers: {}, format: :html)
16
- super(path, params.merge(format: format), headers)
17
- end
18
- end
19
-
20
- if Rails::VERSION::MAJOR < 5
21
- RSpec.configure do |config|
22
- config.include PreRailsFiveHTTPMethodShim, type: :controller
23
- config.include PreRailsFiveHTTPMethodShim, type: :request
24
- end
25
- end