session-check 0.0.9 → 0.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.
- data/README.md +4 -2
- data/app/controllers/session_checks_controller.rb +12 -0
- data/app/helpers/session_check_helper.rb +1 -18
- data/app/views/_session_check.html.erb +28 -0
- data/config/routes.rb +1 -1
- data/lib/session/check/version.rb +1 -1
- metadata +20 -2
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Session Check
|
2
2
|
|
3
|
-
A gem that
|
3
|
+
A gem that returns you to your application's sign in page when your Devise session expires.
|
4
4
|
|
5
5
|
# Usage
|
6
6
|
|
@@ -18,4 +18,6 @@ You're done.
|
|
18
18
|
|
19
19
|
A JS timeout checks a value supplied from your Devise config, and when it determines that the Devise session has expired,
|
20
20
|
it takes the user to the sign in page. A global AJAX listener ensures AJAX heavy apps are catered for, by listening to each
|
21
|
-
request and resetting the counter for you.
|
21
|
+
request and resetting the counter for you.
|
22
|
+
|
23
|
+
No server ping requests are made, so there is no extra load on your server.
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class SessionChecksController < ActionController::Base
|
2
|
+
|
3
|
+
skip_authorization_check if defined?(CanCan)
|
4
|
+
session :off # Don't keep the session alive
|
5
|
+
|
6
|
+
# Find it there is a session, and if it has any warden information. If so, the user is logged in.
|
7
|
+
def time_to_session_expiry
|
8
|
+
sid = request.cookies['_session_id']
|
9
|
+
sess = Redis.current.get("www_session:#{sid}")
|
10
|
+
render json: {session_exists: (sess && sess.include?('warden'))}
|
11
|
+
end
|
12
|
+
end
|
@@ -3,24 +3,7 @@ require 'devise'
|
|
3
3
|
module SessionCheckHelper
|
4
4
|
|
5
5
|
def session_check
|
6
|
-
|
7
|
-
(function(){
|
8
|
-
var session_time_left = #{Devise.timeout_in};
|
9
|
-
var session_check = function(){
|
10
|
-
session_time_left = session_time_left - 10;
|
11
|
-
if (session_time_left < 0){
|
12
|
-
window.location = '/users/sign_in';
|
13
|
-
}
|
14
|
-
setTimeout(session_check, 10000);
|
15
|
-
}
|
16
|
-
setTimeout(session_check, 10000);
|
17
|
-
$.ajaxSetup({
|
18
|
-
complete: function(xhr) {
|
19
|
-
session_time_left = #{Devise.timeout_in};
|
20
|
-
}
|
21
|
-
});
|
22
|
-
}());
|
23
|
-
</script>".html_safe
|
6
|
+
render :partial => '/session_check', locals: {session_time: Devise.timeout_in}
|
24
7
|
end
|
25
8
|
|
26
9
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<script>
|
2
|
+
var should_session_check = <%= !current_user.nil? %>;
|
3
|
+
(function () {
|
4
|
+
var session_time_left = <%= session_time %>;
|
5
|
+
var force_sign_in = function () {
|
6
|
+
window.location = '/users/sign_in';
|
7
|
+
};
|
8
|
+
var session_check = function () {
|
9
|
+
session_time_left = session_time_left - 10;
|
10
|
+
if (should_session_check && session_time_left < 0) {
|
11
|
+
$.get('/session_check/time_to_session_expiry')
|
12
|
+
.done(function (d) {
|
13
|
+
if (!d.session_exists) {
|
14
|
+
force_sign_in();
|
15
|
+
}
|
16
|
+
})
|
17
|
+
.fail(force_sign_in);
|
18
|
+
}
|
19
|
+
setTimeout(session_check, 1000);
|
20
|
+
};
|
21
|
+
setTimeout(session_check, 1000);
|
22
|
+
$.ajaxSetup({
|
23
|
+
complete: function (xhr) {
|
24
|
+
session_time_left = <%= session_time %>;
|
25
|
+
}
|
26
|
+
});
|
27
|
+
}());
|
28
|
+
</script>
|
data/config/routes.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: session-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
type: :runtime
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>'
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
type: :runtime
|
32
|
+
name: session_off
|
33
|
+
prerelease: false
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
none: false
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
description:
|
31
47
|
email:
|
32
48
|
- harry@harrylascelles.com
|
@@ -34,6 +50,8 @@ executables: []
|
|
34
50
|
extensions: []
|
35
51
|
extra_rdoc_files: []
|
36
52
|
files:
|
53
|
+
- app/controllers/session_checks_controller.rb
|
54
|
+
- app/views/_session_check.html.erb
|
37
55
|
- app/helpers/session_check_helper.rb
|
38
56
|
- lib/session/check/engine.rb
|
39
57
|
- lib/session/check/version.rb
|