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.
- checksums.yaml +4 -4
- data/.travis.yml +8 -14
- data/Appraisals +11 -3
- data/Gemfile +1 -3
- data/Gemfile.lock +91 -86
- data/NEWS.md +86 -4
- data/README.md +54 -28
- data/app/controllers/clearance/base_controller.rb +8 -1
- data/app/controllers/clearance/passwords_controller.rb +23 -5
- data/clearance.gemspec +15 -9
- data/config/locales/clearance.en.yml +1 -0
- data/config/routes.rb +1 -1
- data/gemfiles/rails_5.0.gemfile +3 -3
- data/gemfiles/rails_5.1.gemfile +3 -3
- data/gemfiles/rails_5.2.gemfile +3 -3
- data/gemfiles/{rails_4.2.gemfile → rails_6.0.gemfile} +5 -4
- data/lib/clearance/authentication.rb +1 -1
- data/lib/clearance/back_door.rb +1 -1
- data/lib/clearance/configuration.rb +30 -19
- data/lib/clearance/password_strategies.rb +5 -4
- data/lib/clearance/password_strategies/argon2.rb +23 -0
- data/lib/clearance/password_strategies/bcrypt.rb +17 -11
- data/lib/clearance/rack_session.rb +5 -1
- data/lib/clearance/session.rb +39 -3
- data/lib/clearance/testing/deny_access_matcher.rb +1 -5
- data/lib/clearance/user.rb +12 -3
- data/lib/clearance/version.rb +1 -1
- data/lib/generators/clearance/install/install_generator.rb +11 -7
- data/lib/generators/clearance/install/templates/README +10 -4
- data/lib/generators/clearance/install/templates/db/migrate/add_clearance_to_users.rb.erb +1 -1
- data/lib/generators/clearance/install/templates/db/migrate/create_users.rb.erb +1 -1
- data/lib/generators/clearance/routes/templates/routes.rb +1 -1
- data/spec/acceptance/clearance_installation_spec.rb +0 -4
- data/spec/app_templates/app/models/user.rb +1 -1
- data/spec/app_templates/testapp/app/controllers/home_controller.rb +1 -5
- data/spec/app_templates/testapp/app/views/layouts/application.html.erb +24 -0
- data/spec/clearance/back_door_spec.rb +12 -6
- data/spec/clearance/rack_session_spec.rb +2 -0
- data/spec/clearance/session_spec.rb +91 -16
- data/spec/clearance/testing/deny_access_matcher_spec.rb +32 -0
- data/spec/configuration_spec.rb +46 -15
- data/spec/controllers/passwords_controller_spec.rb +36 -0
- data/spec/controllers/permissions_controller_spec.rb +1 -1
- data/spec/dummy/app/controllers/application_controller.rb +1 -5
- data/spec/dummy/application.rb +7 -1
- data/spec/generators/clearance/install/install_generator_spec.rb +31 -6
- data/spec/generators/clearance/views/views_generator_spec.rb +0 -2
- data/spec/models/user_spec.rb +34 -5
- data/spec/password_strategies/argon2_spec.rb +79 -0
- data/spec/password_strategies/bcrypt_spec.rb +18 -1
- data/spec/requests/authentication_cookie_spec.rb +55 -0
- data/spec/requests/token_expiration_spec.rb +5 -0
- data/spec/spec_helper.rb +4 -7
- data/spec/support/generator_spec_helpers.rb +1 -9
- metadata +52 -26
- data/app/views/layouts/application.html.erb +0 -23
- data/spec/app_templates/app/models/rails5/user.rb +0 -5
- data/spec/support/environment.rb +0 -12
- 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,
|
data/spec/spec_helper.rb
CHANGED
@@ -29,12 +29,10 @@ RSpec.configure do |config|
|
|
29
29
|
|
30
30
|
config.before { restore_default_warning_free_config }
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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",
|
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.
|
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:
|
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:
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
114
|
-
description:
|
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.
|
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:
|
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>
|
data/spec/support/environment.rb
DELETED
@@ -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
|