session-check 0.2.4 → 1.0.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: 24830dfb42af4ee2bde0875deb428f69c7990ab75de29aaf35c6a153622a306d
4
- data.tar.gz: eb214d1d4b3b430b11287cc96fcb69f7afb4712d92c35f927cde90e7fdf023f3
3
+ metadata.gz: 102b701a51a977e38686014696f35e3e81b3ceee97708b5f691d90d28ecad97d
4
+ data.tar.gz: ad91cd99529a77334b30236055c7f2afbe922c23b896df37ae2c7917625ba4a0
5
5
  SHA512:
6
- metadata.gz: d2064b4a1d4e1bc4568bbeae4caa652e8a35a666f36c62c713d0a66a1540575b9fb42c5ee2a011386442ea1f49156995e02979bc10b4b365b3b35b3284dce54e
7
- data.tar.gz: 970f0aab87a62de6e2634f4261512dbbab144637a7e39dfb3a2a0b300535da8a62e81e117b30e7b6d5c23653ba0b0b70ca9ee3b0838e8c42051e24640f831f6a
6
+ metadata.gz: 78245fe80da9ef0b41f55c1474a2a58724eb6e0470a1361980fba862798b269c1faee4a55c1e34b4118ef259d724ee26a2af975cfe8693dbf046f53fbfbe7622
7
+ data.tar.gz: f9d02adc30f194bb6c53fc0011f54892963a82b8b8e8b965028ba4bbc52671e1ba92c59dc963399017dfef7a9119ab0d3f1516b5ce09a83c9b9f9b5c29561579
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Session
4
+ module Check
5
+ class SessionChecksController < ActionController::Base
6
+ skip_authorization_check if defined?(CanCan)
7
+
8
+ prepend_before_action :dont_update_request_time
9
+
10
+ # Find it there is a session, and if it has any warden information. If so, the user is logged in.
11
+ def time_to_session_expiry
12
+ session_exists = false
13
+ session_expires_in = 0
14
+ if current_user
15
+ session_exists = true
16
+ # This calculates how many seconds there are until they are logged out
17
+ session_expires_in = calculate_session_expires_in
18
+ end
19
+ render json: { session_exists: session_exists, session_expires_in: session_expires_in }
20
+ end
21
+
22
+ # This ensures this request ping doesn't update their last access time.
23
+ private def dont_update_request_time
24
+ request.env['devise.skip_trackable'] = true
25
+ end
26
+
27
+ private def calculate_session_expires_in
28
+ User.timeout_in -
29
+ Time.now.utc.to_i.seconds +
30
+ SessionChecksController.time_of_last_warden_request(session).to_i.seconds
31
+ rescue => _e
32
+ 1000000.seconds
33
+ end
34
+
35
+ class << self
36
+ def time_of_last_warden_request(session)
37
+ session['warden.user.user.session']['last_request_at']
38
+ rescue => _e
39
+ Time.zone.now
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'devise'
4
+
5
+ module Session
6
+ module Check
7
+ module SessionCheckHelper
8
+ def session_check(options = {})
9
+ locals = {
10
+ session_time: Devise.timeout_in,
11
+ check_every: 10,
12
+ reset_counter_on_ajax: true,
13
+ logged_out_url: '/users/sign_in',
14
+ current_user: current_user
15
+ }.merge options
16
+
17
+ ActionController::Base.render(partial: '/session_check', locals: locals)
18
+ end
19
+ end
20
+ end
21
+ end
data/config/routes.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.application.routes.draw do
2
- get 'session_check/time_to_session_expiry', to: 'session_checks#time_to_session_expiry'
4
+ get 'session_check/time_to_session_expiry', to: 'session/check/session_checks#time_to_session_expiry'
3
5
  end
@@ -1,15 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails'
2
4
 
3
5
  module Session
4
6
  module Check
5
7
  class Engine < ::Rails::Engine
6
- initializer "session-check.loader" do
8
+ config.to_prepare do
7
9
  ActiveSupport.on_load :action_controller do
8
- helper SessionCheckHelper
10
+ include Session::Check::SessionCheckHelper
9
11
  helper_method :session_check
10
12
  end
11
13
  end
12
14
  end
13
15
  end
14
16
  end
15
-
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Session
2
4
  module Check
3
- VERSION = '0.2.4'
5
+ VERSION = '1.0.0'
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: session-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-12 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,6 +38,90 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: combustion
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
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: sqlite3
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
+ - !ruby/object:Gem::Dependency
112
+ name: timecop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
41
125
  description:
42
126
  email:
43
127
  - harry@harrylascelles.com
@@ -46,15 +130,15 @@ extensions: []
46
130
  extra_rdoc_files: []
47
131
  files:
48
132
  - README.md
49
- - app/controllers/session_checks_controller.rb
50
- - app/helpers/session_check_helper.rb
133
+ - app/controllers/session/check/session_checks_controller.rb
134
+ - app/helpers/session/check/session_check_helper.rb
51
135
  - app/views/_session_check.html.erb
52
136
  - config/routes.rb
53
137
  - lib/session-check.rb
54
138
  - lib/session/check.rb
55
139
  - lib/session/check/engine.rb
56
140
  - lib/session/check/version.rb
57
- homepage: https://github.com/firstbanco/session-check
141
+ homepage: https://github.com/bambooengineering/session-check
58
142
  licenses:
59
143
  - MIT
60
144
  metadata: {}
@@ -73,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
157
  - !ruby/object:Gem::Version
74
158
  version: '0'
75
159
  requirements: []
76
- rubygems_version: 3.0.3
160
+ rubygems_version: 3.1.6
77
161
  signing_key:
78
162
  specification_version: 4
79
163
  summary: A gem for JS clients to check if their session has expired.
@@ -1,23 +0,0 @@
1
- class SessionChecksController < ActionController::Base
2
-
3
- skip_authorization_check if defined?(CanCan)
4
-
5
- prepend_before_action :dont_update_request_time
6
-
7
- # Find it there is a session, and if it has any warden information. If so, the user is logged in.
8
- def time_to_session_expiry
9
- session_exists = false
10
- session_expires_in = 0
11
- if current_user
12
- session_exists = true
13
- # This calculates how many seconds there are until they are logged out
14
- session_expires_in = User.timeout_in - Time.now.utc.to_i + session['warden.user.user.session']['last_request_at'].to_i rescue 1000000
15
- end
16
- render json: {session_exists: session_exists, session_expires_in: session_expires_in}
17
- end
18
-
19
- # This ensures this request ping doesn't update their last access time.
20
- def dont_update_request_time
21
- request.env['devise.skip_trackable'] = true
22
- end
23
- end
@@ -1,15 +0,0 @@
1
- require 'devise'
2
-
3
- module SessionCheckHelper
4
-
5
- def session_check(options = {})
6
- locals = {
7
- session_time: Devise.timeout_in,
8
- check_every: 10,
9
- reset_counter_on_ajax: true,
10
- logged_out_url: '/users/sign_in'
11
- }.merge options
12
- render :partial => '/session_check', locals: locals
13
- end
14
-
15
- end