authenticate 0.3.1 → 0.3.2
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.
- 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
|
-
 
|
15
|
+
[](https://badge.fury.io/rb/authenticate)  
|
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
|