authenticate 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +27 -0
- data/CHANGELOG.md +6 -0
- data/CONTRIBUTING.md +59 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +11 -11
- data/README.md +37 -4
- data/Rakefile +2 -4
- data/app/controllers/authenticate/passwords_controller.rb +3 -3
- data/app/controllers/authenticate/sessions_controller.rb +4 -4
- data/app/controllers/authenticate/users_controller.rb +5 -7
- data/app/mailers/authenticate_mailer.rb +6 -8
- data/authenticate.gemspec +8 -9
- data/lib/authenticate.rb +1 -1
- data/lib/authenticate/callbacks/authenticatable.rb +1 -2
- data/lib/authenticate/callbacks/brute_force.rb +1 -3
- data/lib/authenticate/callbacks/lifetimed.rb +2 -1
- data/lib/authenticate/callbacks/timeoutable.rb +3 -2
- data/lib/authenticate/callbacks/trackable.rb +1 -1
- data/lib/authenticate/configuration.rb +11 -7
- data/lib/authenticate/controller.rb +32 -23
- data/lib/authenticate/crypto/bcrypt.rb +3 -3
- data/lib/authenticate/debug.rb +7 -7
- data/lib/authenticate/engine.rb +4 -2
- data/lib/authenticate/lifecycle.rb +12 -22
- data/lib/authenticate/login_status.rb +4 -3
- data/lib/authenticate/model/brute_force.rb +4 -6
- data/lib/authenticate/model/db_password.rb +5 -14
- data/lib/authenticate/model/email.rb +7 -9
- data/lib/authenticate/model/lifetimed.rb +1 -2
- data/lib/authenticate/model/password_reset.rb +1 -3
- data/lib/authenticate/model/timeoutable.rb +14 -15
- data/lib/authenticate/model/trackable.rb +5 -4
- data/lib/authenticate/model/username.rb +3 -5
- data/lib/authenticate/modules.rb +37 -39
- data/lib/authenticate/session.rb +15 -23
- data/lib/authenticate/token.rb +3 -0
- data/lib/authenticate/user.rb +2 -6
- data/lib/authenticate/version.rb +1 -1
- data/lib/generators/authenticate/controllers/controllers_generator.rb +1 -2
- data/lib/generators/authenticate/helpers.rb +1 -2
- data/lib/generators/authenticate/install/install_generator.rb +31 -32
- data/lib/generators/authenticate/install/templates/authenticate.rb +0 -1
- data/lib/generators/authenticate/routes/routes_generator.rb +1 -2
- data/lib/generators/authenticate/views/USAGE +3 -2
- data/lib/generators/authenticate/views/views_generator.rb +1 -2
- data/spec/controllers/passwords_controller_spec.rb +5 -7
- data/spec/controllers/secured_controller_spec.rb +6 -6
- data/spec/controllers/sessions_controller_spec.rb +2 -2
- data/spec/controllers/users_controller_spec.rb +4 -4
- data/spec/features/brute_force_spec.rb +0 -2
- data/spec/features/max_session_lifetime_spec.rb +0 -1
- data/spec/features/password_reset_spec.rb +10 -19
- data/spec/features/password_update_spec.rb +0 -2
- data/spec/features/sign_out_spec.rb +0 -1
- data/spec/features/sign_up_spec.rb +0 -1
- data/spec/features/timeoutable_spec.rb +0 -1
- data/spec/model/brute_force_spec.rb +2 -3
- data/spec/model/configuration_spec.rb +2 -7
- data/spec/model/db_password_spec.rb +4 -6
- data/spec/model/email_spec.rb +1 -3
- data/spec/model/lifetimed_spec.rb +0 -3
- data/spec/model/modules_spec.rb +22 -0
- data/spec/model/password_reset_spec.rb +3 -10
- data/spec/model/session_spec.rb +4 -5
- data/spec/model/timeoutable_spec.rb +0 -1
- data/spec/model/token_spec.rb +1 -3
- data/spec/model/trackable_spec.rb +1 -2
- data/spec/model/user_spec.rb +0 -1
- data/spec/orm/active_record.rb +1 -1
- data/spec/spec_helper.rb +3 -11
- data/spec/support/controllers/controller_helpers.rb +1 -2
- data/spec/support/features/feature_helpers.rb +2 -4
- metadata +29 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 880f3ddf3bf73620d2ad00b9fa97961e0b9572cb
|
4
|
+
data.tar.gz: 6f8552c11692b6ed41b86bc11d9ad325c54a3b63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8ed33e95016c51092e3b082d51d04c8ab0787cf1f4d98d03a3aafe9f70aaef320beb5acc2653932053970c55c14db0b2d0cacd6deb7f6d26ec882564b113ed6
|
7
|
+
data.tar.gz: 401d92cb7b48b1ce32c961c42901ff20ae586648d1e266b9d0f954a76fb6449a057d12a34fdb52a6e5e9f590297f39cf7a9a93d0b1eca340f6adfb1a57192cba
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- 'bin/rails'
|
4
|
+
- 'spec/dummy/**/*'
|
5
|
+
- 'lib/generators/authenticate/install/templates/db/migrate/**/*'
|
6
|
+
- 'lib/generators/authenticate/routes/templates/routes.rb'
|
7
|
+
|
8
|
+
Metrics/LineLength:
|
9
|
+
Max: 120
|
10
|
+
|
11
|
+
Documentation:
|
12
|
+
Exclude:
|
13
|
+
- 'lib/generators/**/*'
|
14
|
+
|
15
|
+
Metrics/MethodLength:
|
16
|
+
Max: 16
|
17
|
+
|
18
|
+
Metrics/ClassLength:
|
19
|
+
Exclude:
|
20
|
+
- 'lib/generators/authenticate/install/install_generator.rb'
|
21
|
+
|
22
|
+
Metrics/AbcSize:
|
23
|
+
Max: 18
|
24
|
+
|
25
|
+
Lint/IneffectiveAccessModifier:
|
26
|
+
Exclude:
|
27
|
+
- 'lib/generators/authenticate/**/*'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Authenticate Changelog
|
2
2
|
|
3
|
+
## [0.3.2] - April 28, 2016
|
4
|
+
|
5
|
+
Error now raised if User model is missing required attributes.
|
6
|
+
All code now conforms to a rubocode profile.
|
7
|
+
|
8
|
+
|
3
9
|
## [0.3.1] - March 10, 2016
|
4
10
|
|
5
11
|
User controller now allows arbitrary parameters without having to explicitly declare
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
I love pull requests. I'm trying to keep it as easy as possible to contribute changes. There
|
4
|
+
are just a couple of guidelines to follow to help me stay on top of things.
|
5
|
+
|
6
|
+
|
7
|
+
## Let's talk
|
8
|
+
|
9
|
+
Whether you're fixing a bug or adding a feature, feel free to talk to me first on
|
10
|
+
[twitter](https://twitter.com/JustinTomich). We can make sure the change isn't already
|
11
|
+
underway somewhere else.
|
12
|
+
|
13
|
+
|
14
|
+
## Getting started
|
15
|
+
|
16
|
+
* Make sure you have a [GitHub account](https://github.com/signup/free)
|
17
|
+
* Open a [New Issue](https://github.com/tomichj/authenticate/issues) on github for your change,
|
18
|
+
assuming one does not already exist. If one already exists, join the conversation.
|
19
|
+
* Fork the repository on GitHub.
|
20
|
+
|
21
|
+
## Setup
|
22
|
+
|
23
|
+
Clone the repo:
|
24
|
+
|
25
|
+
`git clone https://github.com/<your-username>/authenticate`
|
26
|
+
|
27
|
+
CD into your clone and run bundler install:
|
28
|
+
|
29
|
+
`cd authenticate && bundle install`
|
30
|
+
|
31
|
+
Make sure the tests pass:
|
32
|
+
|
33
|
+
`rake`
|
34
|
+
|
35
|
+
Make your change. Add tests for your change. Make sure the tests pass:
|
36
|
+
|
37
|
+
`rake`
|
38
|
+
|
39
|
+
I use `rubocop` to maintain ruby coding style. Install and run it like so:
|
40
|
+
|
41
|
+
```sh
|
42
|
+
gem install rubocop
|
43
|
+
rubocop
|
44
|
+
```
|
45
|
+
|
46
|
+
Once you resolve any issues rubocop finds, you're ready to go. Push your fork and
|
47
|
+
[submit a pull request](https://github.com/tomichj/authenticate/compare/).
|
48
|
+
|
49
|
+
The ball is now in my court. I'll try to comment on your pull request within a couple of business days
|
50
|
+
(hopefully the same day).
|
51
|
+
|
52
|
+
Things you can do to increase the speed of acceptance:
|
53
|
+
|
54
|
+
* talk to me ahead of time
|
55
|
+
* write tests
|
56
|
+
* follow the [ruby style guide](https://github.com/bbatsov/ruby-style-guide)
|
57
|
+
* write a good [commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
58
|
+
|
59
|
+
Thanks very much!
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
authenticate (0.3.
|
5
|
-
bcrypt
|
4
|
+
authenticate (0.3.1)
|
5
|
+
bcrypt (~> 3.1)
|
6
6
|
email_validator (~> 1.6)
|
7
7
|
rails (>= 4.0, < 5.1)
|
8
8
|
|
@@ -56,7 +56,7 @@ GEM
|
|
56
56
|
rack-test (>= 0.5.4)
|
57
57
|
xpath (~> 2.0)
|
58
58
|
coderay (1.1.0)
|
59
|
-
concurrent-ruby (1.0.
|
59
|
+
concurrent-ruby (1.0.1)
|
60
60
|
database_cleaner (1.5.1)
|
61
61
|
diff-lcs (1.2.5)
|
62
62
|
email_validator (1.6.0)
|
@@ -132,7 +132,7 @@ GEM
|
|
132
132
|
sprockets (3.5.2)
|
133
133
|
concurrent-ruby (~> 1.0)
|
134
134
|
rack (> 1, < 3)
|
135
|
-
sprockets-rails (3.0.
|
135
|
+
sprockets-rails (3.0.4)
|
136
136
|
actionpack (>= 4.0)
|
137
137
|
activesupport (>= 4.0)
|
138
138
|
sprockets (>= 3.0.0)
|
@@ -150,14 +150,14 @@ PLATFORMS
|
|
150
150
|
|
151
151
|
DEPENDENCIES
|
152
152
|
authenticate!
|
153
|
-
capybara (~> 2.6
|
154
|
-
database_cleaner (~> 1.5
|
155
|
-
factory_girl
|
156
|
-
pry
|
157
|
-
rspec-rails (~> 3.1
|
153
|
+
capybara (~> 2.6)
|
154
|
+
database_cleaner (~> 1.5)
|
155
|
+
factory_girl (~> 4.4)
|
156
|
+
pry (~> 0.10)
|
157
|
+
rspec-rails (~> 3.1)
|
158
158
|
shoulda-matchers (~> 2.8)
|
159
|
-
sqlite3
|
160
|
-
timecop (~> 0.8
|
159
|
+
sqlite3 (~> 1.3)
|
160
|
+
timecop (~> 0.8)
|
161
161
|
|
162
162
|
BUNDLED WITH
|
163
163
|
1.11.2
|
data/README.md
CHANGED
@@ -7,11 +7,13 @@ open to significant modification.
|
|
7
7
|
|
8
8
|
Authenticate is inspired by, and draws from, Devise, Warden, Authlogic, Clearance, Sorcery, and restful_authentication.
|
9
9
|
|
10
|
-
Please use [GitHub Issues] to report bugs.
|
10
|
+
Please use [GitHub Issues] to report bugs. You can contact me directly on twitter
|
11
|
+
[@JustinTomich](https://twitter.com/justintomich).
|
11
12
|
|
12
13
|
[GitHub Issues]: https://github.com/tomichj/authenticate/issues
|
13
14
|
|
14
|
-
![Build status](https://travis-ci.org/tomichj/authenticate.svg?branch=master) ![Code Climate](https://codeclimate.com/github/tomichj/authenticate/badges/gpa.svg)
|
15
|
+
[![Gem Version](https://badge.fury.io/rb/authenticate.svg)](https://badge.fury.io/rb/authenticate) ![Build status](https://travis-ci.org/tomichj/authenticate.svg?branch=master) ![Code Climate](https://codeclimate.com/github/tomichj/authenticate/badges/gpa.svg)
|
16
|
+
|
15
17
|
|
16
18
|
## Philosophy
|
17
19
|
|
@@ -59,7 +61,7 @@ The generator does the following:
|
|
59
61
|
|
60
62
|
* Insert `include Authenticate::User` into your `User` model. If you don't have a User model, one is created.
|
61
63
|
* Insert `include Authenticate::Controller` into your `ApplicationController`
|
62
|
-
* Add an initializer at `config/
|
64
|
+
* Add an initializer at `config/initializers/authenticate.rb`.
|
63
65
|
* Create migrations to create a users table or add columns to your existing table.
|
64
66
|
|
65
67
|
|
@@ -213,7 +215,38 @@ If the customization at the views level is not enough, you can customize each co
|
|
213
215
|
authenticate mailer. See [app/controllers](/app/controllers) for the default controllers, and
|
214
216
|
[app/mailers](/app/mailers) for the default mailer.
|
215
217
|
|
216
|
-
|
218
|
+
To override an authenticate controller, subclass an authenticate controller and update your routes to point to it.
|
219
|
+
|
220
|
+
For example, to customize `Authenticate::SessionController`:
|
221
|
+
|
222
|
+
* subclass the controller:
|
223
|
+
|
224
|
+
```ruby
|
225
|
+
class SessionsController < Authenticate::SessionController
|
226
|
+
# render sign in screen
|
227
|
+
def new
|
228
|
+
# ...
|
229
|
+
end
|
230
|
+
...
|
231
|
+
end
|
232
|
+
```
|
233
|
+
|
234
|
+
* update your routes to use your new controller.
|
235
|
+
|
236
|
+
Start by dumping a copy of authenticate routes to your `config/routes.rb`:
|
237
|
+
|
238
|
+
```sh
|
239
|
+
$ rails generate authenticate:routes
|
240
|
+
```
|
241
|
+
|
242
|
+
Now update `config/routes.rb` to point to your new controller:
|
243
|
+
```ruby
|
244
|
+
resource :session, controller: 'sessions', only: [:create, :new, :destroy]
|
245
|
+
...
|
246
|
+
```
|
247
|
+
|
248
|
+
You can also use the Authenticate controller generator to copy the default controllers and mailer into
|
249
|
+
your application:
|
217
250
|
|
218
251
|
```sh
|
219
252
|
$ rails generate authenticate:controllers
|
data/Rakefile
CHANGED
@@ -14,7 +14,7 @@ class Authenticate::PasswordsController < Authenticate::AuthenticateController
|
|
14
14
|
#
|
15
15
|
# POST /users/password
|
16
16
|
def create
|
17
|
-
if user = find_user_for_create
|
17
|
+
if (user = find_user_for_create)
|
18
18
|
user.forgot_password!
|
19
19
|
deliver_email(user)
|
20
20
|
end
|
@@ -41,11 +41,11 @@ class Authenticate::PasswordsController < Authenticate::AuthenticateController
|
|
41
41
|
|
42
42
|
if !@user.reset_password_period_valid?
|
43
43
|
redirect_to sign_in_path, notice: flash_failure_token_expired
|
44
|
-
elsif @user.update_password password_reset_params
|
44
|
+
elsif @user.update_password password_reset_params # password changed, log user back in!
|
45
45
|
login @user
|
46
46
|
redirect_to url_after_update, notice: flash_success_password_changed
|
47
47
|
else
|
48
|
-
# failed to update password for some reason
|
48
|
+
# failed to update password for some reason, perhaps password was too short or otherwise sucked.
|
49
49
|
flash.now[:notice] = flash_failure_after_update
|
50
50
|
render template: 'passwords/edit'
|
51
51
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
#
|
2
|
+
# Allow authenticate users to log in and log out.
|
3
|
+
#
|
1
4
|
class Authenticate::SessionsController < Authenticate::AuthenticateController
|
2
5
|
before_action :redirect_signed_in_users, only: [:new]
|
3
6
|
skip_before_action :require_authentication, only: [:create, :new, :destroy], raise: false
|
4
7
|
|
5
|
-
|
6
8
|
def new
|
7
9
|
render template: 'sessions/new'
|
8
10
|
end
|
@@ -27,9 +29,7 @@ class Authenticate::SessionsController < Authenticate::AuthenticateController
|
|
27
29
|
private
|
28
30
|
|
29
31
|
def redirect_signed_in_users
|
30
|
-
if authenticated?
|
31
|
-
redirect_to url_for_signed_in_users
|
32
|
-
end
|
32
|
+
redirect_to url_for_signed_in_users if authenticated?
|
33
33
|
end
|
34
34
|
|
35
35
|
def url_after_create
|
@@ -1,3 +1,6 @@
|
|
1
|
+
#
|
2
|
+
# Controller to reate new users.
|
3
|
+
#
|
1
4
|
class Authenticate::UsersController < Authenticate::AuthenticateController
|
2
5
|
before_action :redirect_signed_in_users, only: [:create, :new]
|
3
6
|
skip_before_action :require_authentication, only: [:create, :new], raise: false
|
@@ -21,16 +24,13 @@ class Authenticate::UsersController < Authenticate::AuthenticateController
|
|
21
24
|
private
|
22
25
|
|
23
26
|
def redirect_signed_in_users
|
24
|
-
if authenticated?
|
25
|
-
redirect_to Authenticate.configuration.redirect_url
|
26
|
-
end
|
27
|
+
redirect_to Authenticate.configuration.redirect_url if authenticated?
|
27
28
|
end
|
28
29
|
|
29
30
|
def url_after_create
|
30
31
|
Authenticate.configuration.redirect_url
|
31
32
|
end
|
32
33
|
|
33
|
-
|
34
34
|
def user_from_params
|
35
35
|
email = user_params.delete(:email)
|
36
36
|
password = user_params.delete(:password)
|
@@ -42,8 +42,6 @@ class Authenticate::UsersController < Authenticate::AuthenticateController
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def user_params
|
45
|
-
params[Authenticate.configuration.user_model_param_key] ||
|
45
|
+
params[Authenticate.configuration.user_model_param_key] || {}
|
46
46
|
end
|
47
|
-
|
48
|
-
|
49
47
|
end
|
@@ -1,13 +1,11 @@
|
|
1
|
+
# Authenticate mailer.
|
2
|
+
#
|
3
|
+
# Handles password change requests.
|
1
4
|
class AuthenticateMailer < ActionMailer::Base
|
2
5
|
def change_password(user)
|
3
6
|
@user = user
|
4
|
-
mail
|
5
|
-
|
6
|
-
|
7
|
-
subject: I18n.t(
|
8
|
-
:change_password,
|
9
|
-
scope: [:authenticate, :models, :authenticate_mailer]
|
10
|
-
),
|
11
|
-
)
|
7
|
+
mail from: Authenticate.configuration.mailer_sender,
|
8
|
+
to: @user.email,
|
9
|
+
subject: I18n.t(:change_password, scope: [:authenticate, :models, :authenticate_mailer])
|
12
10
|
end
|
13
11
|
end
|
data/authenticate.gemspec
CHANGED
@@ -21,19 +21,18 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.extra_rdoc_files = %w(LICENSE README.md CHANGELOG.md)
|
22
22
|
s.rdoc_options = ['--charset=UTF-8']
|
23
23
|
|
24
|
-
s.add_dependency 'bcrypt'
|
24
|
+
s.add_dependency 'bcrypt', '~> 3.1'
|
25
25
|
s.add_dependency 'email_validator', '~> 1.6'
|
26
26
|
s.add_dependency 'rails', '>= 4.0', '< 5.1'
|
27
27
|
|
28
|
-
|
29
|
-
s.add_development_dependency '
|
30
|
-
s.add_development_dependency '
|
31
|
-
s.add_development_dependency '
|
32
|
-
s.add_development_dependency 'sqlite3'
|
28
|
+
s.add_development_dependency 'factory_girl', '~> 4.4'
|
29
|
+
s.add_development_dependency 'rspec-rails', '~> 3.1'
|
30
|
+
s.add_development_dependency 'pry', '~> 0.10'
|
31
|
+
s.add_development_dependency 'sqlite3', '~> 1.3'
|
33
32
|
s.add_development_dependency 'shoulda-matchers', '~> 2.8'
|
34
|
-
s.add_development_dependency 'capybara', '~> 2.6
|
35
|
-
s.add_development_dependency 'database_cleaner', '~> 1.5
|
36
|
-
s.add_development_dependency 'timecop', '~> 0.8
|
33
|
+
s.add_development_dependency 'capybara', '~> 2.6'
|
34
|
+
s.add_development_dependency 'database_cleaner', '~> 1.5'
|
35
|
+
s.add_development_dependency 'timecop', '~> 0.8'
|
37
36
|
|
38
37
|
s.required_ruby_version = Gem::Requirement.new('>= 2.0')
|
39
38
|
end
|
data/lib/authenticate.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Callback to check that the session has been authenticated.
|
2
2
|
#
|
3
|
-
|
4
3
|
# If user failed to authenticate, toss them out.
|
5
|
-
Authenticate.lifecycle.after_authentication name: 'authenticatable' do |
|
4
|
+
Authenticate.lifecycle.after_authentication name: 'authenticatable' do |_user, session, _opts|
|
6
5
|
throw(:failure, I18n.t('callbacks.authenticatable.failure')) unless session && session.authenticated?
|
7
6
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# Prevents a locked user from logging in, and unlocks users that expired their lock time.
|
2
2
|
# Runs as a hook after authentication.
|
3
|
-
Authenticate.lifecycle.prepend_after_authentication name: 'brute force protection' do |user, session,
|
3
|
+
Authenticate.lifecycle.prepend_after_authentication name: 'brute force protection' do |user, session, _options|
|
4
4
|
include ActionView::Helpers::DateHelper
|
5
|
-
|
6
5
|
unless session.authenticated? || Authenticate.configuration.max_consecutive_bad_logins_allowed.nil?
|
7
6
|
user_credentials = User.credentials(session.request.params)
|
8
7
|
user ||= User.find_by_credentials(user_credentials)
|
@@ -23,5 +22,4 @@ Authenticate.lifecycle.prepend_after_authentication name: 'brute force protectio
|
|
23
22
|
remaining = time_ago_in_words(user.lock_expires_at)
|
24
23
|
throw(:failure, I18n.t('callbacks.brute_force.failure', time_remaining: remaining.to_s))
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# Catch sessions that have been live for too long and kill them, forcing the user to reauthenticate.
|
2
|
-
Authenticate.lifecycle.after_set_user name: 'lifetimed after set_user',
|
2
|
+
Authenticate.lifecycle.after_set_user name: 'lifetimed after set_user',
|
3
|
+
except: :authentication do |user, _session, _options|
|
3
4
|
if user && user.respond_to?(:max_session_lifetime_exceeded?)
|
4
5
|
throw(:failure, I18n.t('callbacks.lifetimed.failure')) if user.max_session_lifetime_exceeded?
|
5
6
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Update last_access_at on every authentication
|
2
|
-
Authenticate.lifecycle.after_authentication name: 'timeoutable after authentication' do |user,
|
2
|
+
Authenticate.lifecycle.after_authentication name: 'timeoutable after authentication' do |user, _session, _options|
|
3
3
|
if user && user.respond_to?(:last_access_at)
|
4
4
|
user.last_access_at = Time.now.utc
|
5
5
|
user.save!
|
@@ -7,7 +7,8 @@ Authenticate.lifecycle.after_authentication name: 'timeoutable after authenticat
|
|
7
7
|
end
|
8
8
|
|
9
9
|
# Fail users that have timed out. Otherwise update last_access_at.
|
10
|
-
Authenticate.lifecycle.after_set_user name: 'timeoutable after set_user',
|
10
|
+
Authenticate.lifecycle.after_set_user name: 'timeoutable after set_user',
|
11
|
+
except: :authentication do |user, _session, _options|
|
11
12
|
if user && user.respond_to?(:timedout?)
|
12
13
|
throw(:failure, I18n.t('callbacks.timeoutable.failure')) if user.timedout?
|
13
14
|
user.last_access_at = Time.now.utc
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Update all standard tracked stats at each authentication.
|
2
|
-
Authenticate.lifecycle.after_authentication name: 'trackable' do |user, session,
|
2
|
+
Authenticate.lifecycle.after_authentication name: 'trackable' do |user, session, _options|
|
3
3
|
if user && user.respond_to?(:update_tracked_fields!)
|
4
4
|
user.update_tracked_fields!(session.request)
|
5
5
|
end
|