devise_last_seen 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4eded97b7e11d5f5a2978d54274dfeb1fed47180f71d67e721420ab64725b967
4
- data.tar.gz: 85ee84312168e26e194b6ecb7058e30676a884a6e0348f3eb9803ccbf175361f
3
+ metadata.gz: 2f2de27fe8d910c423d8b394a2b75c2839fe654ad6372631a6827c4a4aa28ce3
4
+ data.tar.gz: 9c75f9caf6338458dacedd23906d8abdd2b76fec50a44036bb318ad163d01b4d
5
5
  SHA512:
6
- metadata.gz: a1ff58109c61c69c83093ec1cb0f102d2fa09a39652976b57afb91ba2a522f318cfa72adea73195f690762b266337d3fc4275ea1fcaa39608294be1999c9767f
7
- data.tar.gz: 1984318c81770e4e7da5ea0de1a42e23f3d039742e854429205c2a2a154c72e5f3db53c1bdfd02562156f481a4c562140150b92b6914cbce9162b08c9de75963
6
+ metadata.gz: 5caeae6309231f5785159914f217a53e56c0985d16c823ae35496ab46cf5902780ecfa1141becfd6cd24f6c699d4ac6b9d079974c265fffd6f97f3f3225be352
7
+ data.tar.gz: 51015ba338719b6c8b0a7b2ead1eedd674ffc271678f600d46864b2aa330b79b351f5609f3a8c8b289eb1bac8adb5425f8c61840b889aed373262229ac02e8fa
data/CHANGELOG.md CHANGED
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.0] - 2025-11-11
10
+ ### Added
11
+ - Add a new way to trigger the callback, useful when Warden's callbacks are not available [#16](https://github.com/brunoocasali/devise_last_seen/pull/16)
12
+
9
13
  ## [0.2.2] - 2021-10-01
10
14
  ### Fixed
11
15
  - Fix usage of non-default attribute names in devise last seen configuration [#10](https://github.com/brunoocasali/devise_last_seen/pull/10).
data/README.md CHANGED
@@ -7,9 +7,11 @@ With this kind of feature you could show in your views something like **last see
7
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/056e2b80cbcdb5d7b402/test_coverage)](https://codeclimate.com/github/brunoocasali/devise_last_seen/test_coverage)
8
8
  [![Maintainability](https://api.codeclimate.com/v1/badges/056e2b80cbcdb5d7b402/maintainability)](https://codeclimate.com/github/brunoocasali/devise_last_seen/maintainability)
9
9
 
10
+ :warning: We support officially Rails >= 7.0 and Ruby > 3.4. But the minimum required Ruby version is 2.1 (from gemspec), so this gem probably works in older Rails v5.
11
+
10
12
  ## Installation
11
13
 
12
- You know, add this line to your application's Gemfile:
14
+ You know the drill, add this line to your application's Gemfile:
13
15
 
14
16
  ```ruby
15
17
  gem 'devise_last_seen'
@@ -64,6 +66,17 @@ Devise.setup do |config|
64
66
  end
65
67
  ```
66
68
 
69
+ :warning: for JWT users or folks that does not rely on Devise/Warden's storage. You must manually include the concern
70
+ to your controller like this.
71
+
72
+ ```rb
73
+ class MyApplicationController < ApplicationController
74
+ # This will add `after_action :track_last_seen` to ensure all of your authenticated models with the lastseenable will
75
+ # be touched.
76
+ include DeviseLastSeen::Controllers
77
+ end
78
+ ```
79
+
67
80
  ## Development
68
81
 
69
82
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rspec` to run the tests.
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DeviseLastSeen
4
+ module Controllers
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ after_action :track_last_seen
9
+ end
10
+
11
+ # Track the last seen of the current user for each devise scope that is authenticated and that defines the
12
+ # devise module :lastseenable
13
+ #
14
+ # @return [void]
15
+ def track_last_seen
16
+ Devise.mappings.each do |scope, mapping|
17
+ next unless mapping.modules.include?(:lastseenable)
18
+
19
+ record = public_send("current_#{scope}")
20
+
21
+ record.track_last_seen! if record.respond_to?(:track_last_seen!)
22
+ rescue StandardError => e
23
+ Rails.logger.error("[devise_last_seen] Error tracking last seen for #{scope}: #{e.message}")
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module DeviseLastSeen
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require 'devise'
2
2
  require 'devise_last_seen/model'
3
3
  require 'devise_last_seen/hook'
4
+ require 'devise_last_seen/controller'
4
5
 
5
6
  module Devise
6
7
  # Interval (in seconds) to update the :last_seen_at_attribute attr
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_last_seen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Casali
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-10-01 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: devise
@@ -24,90 +23,6 @@ dependencies:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.1'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.1'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '13'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '13'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.10'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.10'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop-rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop-rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
26
  description: Ensure that devise will update a flag/timestamp on the model whenever
112
27
  a user is authenticated.
113
28
  email:
@@ -120,14 +35,15 @@ files:
120
35
  - LICENSE.txt
121
36
  - README.md
122
37
  - lib/devise_last_seen.rb
38
+ - lib/devise_last_seen/controller.rb
123
39
  - lib/devise_last_seen/hook.rb
124
40
  - lib/devise_last_seen/model.rb
125
41
  - lib/devise_last_seen/version.rb
126
42
  homepage: https://github.com/brunoocasali/devise_last_seen
127
43
  licenses:
128
44
  - MIT
129
- metadata: {}
130
- post_install_message:
45
+ metadata:
46
+ rubygems_mfa_required: 'true'
131
47
  rdoc_options: []
132
48
  require_paths:
133
49
  - lib
@@ -142,8 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
58
  - !ruby/object:Gem::Version
143
59
  version: '0'
144
60
  requirements: []
145
- rubygems_version: 3.1.6
146
- signing_key:
61
+ rubygems_version: 3.6.9
147
62
  specification_version: 4
148
63
  summary: Ensure that devise will update a flag/timestamp on the model whenever a user
149
64
  is authenticated.