session-check 0.2.4 → 1.1.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: 3c086b705a832734d76b4abdeb2e2ce98c3b3278629efce7a7dd0714cedf0134
4
+ data.tar.gz: 4059cbfc502675d24fbb5360e4c3e9de0917690165aaab8a1a39f2ea51f0c33d
5
5
  SHA512:
6
- metadata.gz: d2064b4a1d4e1bc4568bbeae4caa652e8a35a666f36c62c713d0a66a1540575b9fb42c5ee2a011386442ea1f49156995e02979bc10b4b365b3b35b3284dce54e
7
- data.tar.gz: 970f0aab87a62de6e2634f4261512dbbab144637a7e39dfb3a2a0b300535da8a62e81e117b30e7b6d5c23653ba0b0b70ca9ee3b0838e8c42051e24640f831f6a
6
+ metadata.gz: f330839b1cee46fb05e160c0c5f3174a38611a8711a113533a41102016f2cdc6b833787fc95835a33cc07f6dd3bb36e2bd895066b905d429df68428ec48c8106
7
+ data.tar.gz: c0f2cac5d5f86949e0a6c924d35badafdc2bab9c9ae435eae1f5990745476a1d8be383b7ff24f82c623f35ca9a4cc9e2ed3d00b476c4f0e1f575bc1c71548722
data/README.md CHANGED
@@ -31,4 +31,5 @@ their browser, you can start the ping process by calling:
31
31
 
32
32
  # Changelog
33
33
 
34
- Version 0.2.1 : Added explicit reference to Devise (which is required)
34
+ Version 1.1.0 : Added optional nonce
35
+ Version 0.2.1 : Added explicit reference to Devise (which is required)
@@ -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
@@ -1,4 +1,4 @@
1
- <script>
1
+ <script<% if local_assigns[:nonce] %> nonce="<%= nonce %>"<% end %>>
2
2
  var SessionCheck = {
3
3
  should_session_check: <%= !current_user.nil? %>
4
4
  };
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.1.0'
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,14 +1,13 @@
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.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2020-08-12 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: rails
@@ -38,7 +37,90 @@ dependencies:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: '0'
41
- description:
40
+ - !ruby/object:Gem::Dependency
41
+ name: combustion
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: pry-byebug
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rspec-rails
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '5.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: sqlite3
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: timecop
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
42
124
  email:
43
125
  - harry@harrylascelles.com
44
126
  executables: []
@@ -46,19 +128,18 @@ extensions: []
46
128
  extra_rdoc_files: []
47
129
  files:
48
130
  - README.md
49
- - app/controllers/session_checks_controller.rb
50
- - app/helpers/session_check_helper.rb
131
+ - app/controllers/session/check/session_checks_controller.rb
132
+ - app/helpers/session/check/session_check_helper.rb
51
133
  - app/views/_session_check.html.erb
52
134
  - config/routes.rb
53
135
  - lib/session-check.rb
54
136
  - lib/session/check.rb
55
137
  - lib/session/check/engine.rb
56
138
  - lib/session/check/version.rb
57
- homepage: https://github.com/firstbanco/session-check
139
+ homepage: https://github.com/bambooengineering/session-check
58
140
  licenses:
59
141
  - MIT
60
142
  metadata: {}
61
- post_install_message:
62
143
  rdoc_options: []
63
144
  require_paths:
64
145
  - lib
@@ -73,8 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
154
  - !ruby/object:Gem::Version
74
155
  version: '0'
75
156
  requirements: []
76
- rubygems_version: 3.0.3
77
- signing_key:
157
+ rubygems_version: 4.0.6
78
158
  specification_version: 4
79
159
  summary: A gem for JS clients to check if their session has expired.
80
160
  test_files: []
@@ -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