auto-session-timeout 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/auto/session/timeout/version.rb +1 -1
- data/lib/auto_session_timeout.rb +1 -0
- data/lib/auto_session_timeout_helper.rb +16 -23
- data/test/auto_session_timeout_helper_test.rb +19 -23
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3561cc313c2dc97c96fb2a2a5931c01c8a442706
|
4
|
+
data.tar.gz: d5c805a2efeb3af57dad7d2b23aa4aa55b1df902
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dff428123f23f12a7cd5f9cba6a25a8d8576db3519ab01c1a70586e6ec84cf52377910207339adcc4a0360106bdd69b35dcb8bad73f68b452d005223ac0452f
|
7
|
+
data.tar.gz: 022ed3b160ee413a4e703bd097acdec9b865994c2d42cf57276b1087591e220f2859b69edae1c293815741ea6daa01b4bc69a4c11fdf920dba5e9ad76cbb8ba0
|
data/lib/auto_session_timeout.rb
CHANGED
@@ -6,6 +6,7 @@ module AutoSessionTimeout
|
|
6
6
|
|
7
7
|
module ClassMethods
|
8
8
|
def auto_session_timeout(seconds=nil)
|
9
|
+
protect_from_forgery except: [:active, :timeout]
|
9
10
|
prepend_before_action do |c|
|
10
11
|
if c.session[:auto_session_expires_at] && c.session[:auto_session_expires_at] < Time.now
|
11
12
|
c.send :reset_session
|
@@ -2,33 +2,26 @@ module AutoSessionTimeoutHelper
|
|
2
2
|
def auto_session_timeout_js(options={})
|
3
3
|
frequency = options[:frequency] || 60
|
4
4
|
verbosity = options[:verbosity] || 2
|
5
|
+
attributes = options[:attributes] || {}
|
5
6
|
code = <<JS
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
$.ajax({
|
13
|
-
url: '/active',
|
14
|
-
success: function(data) {
|
15
|
-
if(data == 'false'){
|
16
|
-
window.location.href = '/timeout';
|
17
|
-
}
|
18
|
-
}
|
19
|
-
});
|
20
|
-
setTimeout(PeriodicalQuery, (#{frequency} * 1000));
|
21
|
-
}
|
22
|
-
setTimeout(PeriodicalQuery, (#{frequency} * 1000));
|
23
|
-
} else {
|
24
|
-
$.PeriodicalUpdater('/active', {minTimeout:#{frequency * 1000}, multiplier:0, method:'get', verbose:#{verbosity}}, function(remoteData, success) {
|
25
|
-
if (success == 'success' && remoteData == 'false')
|
7
|
+
function PeriodicalQuery() {
|
8
|
+
var request = new XMLHttpRequest();
|
9
|
+
request.onload = function (event) {
|
10
|
+
var status = event.target.status;
|
11
|
+
var response = event.target.response;
|
12
|
+
if (status === 200 && (response === false || response === 'false')) {
|
26
13
|
window.location.href = '/timeout';
|
27
|
-
|
14
|
+
}
|
15
|
+
};
|
16
|
+
request.open('GET', '/active', true);
|
17
|
+
request.responseType = 'json';
|
18
|
+
request.send();
|
19
|
+
setTimeout(PeriodicalQuery, (#{frequency} * 1000));
|
28
20
|
}
|
21
|
+
setTimeout(PeriodicalQuery, (#{frequency} * 1000));
|
29
22
|
JS
|
30
|
-
javascript_tag(code)
|
23
|
+
javascript_tag(code, attributes)
|
31
24
|
end
|
32
25
|
end
|
33
26
|
|
34
|
-
ActionView::Base.send :include, AutoSessionTimeoutHelper
|
27
|
+
ActionView::Base.send :include, AutoSessionTimeoutHelper
|
@@ -8,40 +8,36 @@ describe AutoSessionTimeoutHelper do
|
|
8
8
|
it "returns correct JS" do
|
9
9
|
assert_equal "<script type=\"text/javascript\">
|
10
10
|
//<![CDATA[
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
$.ajax({
|
18
|
-
url: '/active',
|
19
|
-
success: function(data) {
|
20
|
-
if(data == 'false'){
|
21
|
-
window.location.href = '/timeout';
|
22
|
-
}
|
23
|
-
}
|
24
|
-
});
|
25
|
-
setTimeout(PeriodicalQuery, (60 * 1000));
|
26
|
-
}
|
27
|
-
setTimeout(PeriodicalQuery, (60 * 1000));
|
28
|
-
} else {
|
29
|
-
$.PeriodicalUpdater('/active', {minTimeout:60000, multiplier:0, method:'get', verbose:2}, function(remoteData, success) {
|
30
|
-
if (success == 'success' && remoteData == 'false')
|
11
|
+
function PeriodicalQuery() {
|
12
|
+
var request = new XMLHttpRequest();
|
13
|
+
request.onload = function (event) {
|
14
|
+
var status = event.target.status;
|
15
|
+
var response = event.target.response;
|
16
|
+
if (status === 200 && (response === false || response === 'false')) {
|
31
17
|
window.location.href = '/timeout';
|
32
|
-
|
18
|
+
}
|
19
|
+
};
|
20
|
+
request.open('GET', '/active', true);
|
21
|
+
request.responseType = 'json';
|
22
|
+
request.send();
|
23
|
+
setTimeout(PeriodicalQuery, (60 * 1000));
|
33
24
|
}
|
25
|
+
setTimeout(PeriodicalQuery, (60 * 1000));
|
34
26
|
|
35
27
|
//]]>
|
36
28
|
</script>", subject.auto_session_timeout_js
|
37
29
|
end
|
38
30
|
|
39
31
|
it "uses custom frequency when given" do
|
40
|
-
assert_match /
|
32
|
+
assert_match /120/, subject.auto_session_timeout_js(frequency: 120)
|
41
33
|
end
|
42
34
|
|
43
35
|
it "uses 60 when custom frequency is nil" do
|
44
|
-
assert_match /
|
36
|
+
assert_match /60/, subject.auto_session_timeout_js(frequency: nil)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "accepts attributes" do
|
40
|
+
assert_match /data-turbolinks-eval="false"/, subject.auto_session_timeout_js(attributes: { 'data-turbolinks-eval': 'false' })
|
45
41
|
end
|
46
42
|
end
|
47
43
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auto-session-timeout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Bass
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|