rails-automaticlogout 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 3746c6de9b1b0d8a3f5d5aa0ab9fd7f239a1aea3
4
- data.tar.gz: e5159df8503aad1f9b4a44e93a60fc886b4d6206
3
+ metadata.gz: 755f81a5ef6277ff52d72f91f1d4f4fcf1c2ba68
4
+ data.tar.gz: c93b1eeefd9e9570a012ea8cc7dcad8c100281b1
5
5
  SHA512:
6
- metadata.gz: 086a52d6ba0b6f503aeb7926d943dcd90dbc363fc34669aeedb7026b42d4921678a6b1036fd5fde8e66e5ff59070ab20e97c4cd24ede4df5948a9feeab4c28de
7
- data.tar.gz: b723d77f8d35cdfe778635572ee987e695606962bed92aa27de0e1c18b5e7ca6e5b3270ba276f7e8bd1a949562065ec0bfab202a9bf70fac3fc9f316634e7dce
6
+ metadata.gz: 2b2c5813145e6843f857059277ee27567fca9e86a3bb3ef33478f8710a180069e9a64adda6361f5fe751ba2de68703d71f25f1b0d3ff9725aeeeafbdd401657f
7
+ data.tar.gz: 2a313869e0f8bb3c453077371fe6a5b852d6872003585ffe7c5c539f1a88fc90cd98fc958eda442a21c009c32b6e957a79a71dbbe28f254b765563ed256379b5
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ *.gem
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Rails Automatic Logout
2
2
  By Thadeu Esteves Jr.
3
3
 
4
- [![Gem Version](https://badge.fury.io/rb/rails-automaticlogout.svg)](https://badge.fury.io/rb/rails-automaticlogout)
4
+ [![Gem Version](https://badge.fury.io/rb/rails-automaticlogout.png)](https://badge.fury.io/rb/rails-automaticlogout)
5
+ [![Code Climate](https://codeclimate.com/github/Thadeu/rails-automaticlogout/badges/gpa.svg)](https://codeclimate.com/github/Thadeu/rails-automaticlogout)
5
6
 
6
7
  Provides automatic session timeout in a Rails application. Very easy to install and configure. Have you ever wanted to force your users off your app if they go idle for a certain period of time? Many online banking sites use this technique. If your app is used on any kind of public computer system, this plugin is a necessity.
7
8
 
@@ -1,22 +1,141 @@
1
- (function automaticLogoutJs(){
1
+ /**
2
+ * Module AutomaticLogout for JS Files
3
+ * @type {[type]}
4
+ */
5
+ var AutomaticLogout = AutomaticLogout || {};
6
+
7
+ $(document).ready(function(){
8
+ var $regressiveTimer = $('.regressive-timer');
9
+
10
+ ($regressiveTimer.length > 0 &&
11
+ $regressiveTimer.data('expires-at') !== '')
12
+ ? AutomaticLogout.regressiveTimer()
13
+ : AutomaticLogout.ajaxSessionTimeout();
14
+ });
15
+
16
+ /**
17
+ * Send request for destroy session current_user
18
+ * @return {[type]} [description]
19
+ */
20
+ AutomaticLogout.destroySession = function(){
21
+ return window.location.href = '/destroy_automatic_logout';
22
+ }
23
+
24
+ /**
25
+ * Method regressive time based in session auto expired at
26
+ * @param {[type]} date_session [description]
27
+ * @return {[type]} [description]
28
+ */
29
+ AutomaticLogout.regressiveTimer = function(){;
30
+ /**
31
+ * Variables used
32
+ * @param {[type]} '.regressive-timer' [description]
33
+ * @return {[type]} [description]
34
+ */
35
+ var data_timer = $('.regressive-timer').data('expires-at'),
36
+ data_message = $('.regressive-timer').data('message'),
37
+ now_in_seconds = new Date().getTime() / 1000,
38
+ timeout_in_seconds = new Date(data_timer).getTime() / 1000,
39
+ diff_in_seconds = new Number(),
40
+ target_date = new Date(data_timer).getTime(),
41
+ current_date = new Date().getTime();
42
+
43
+ /**
44
+ * diff in seconds with 0 decimals
45
+ * @param {[type]} timeout_in_seconds - now_in_seconds [description]
46
+ * @return {[type]} [description]
47
+ */
48
+ diff_in_seconds = (timeout_in_seconds - now_in_seconds).toFixed(0);
49
+
50
+ if (diff_in_seconds <= 0){
51
+ if (confirm(data_message)){
52
+ AutomaticLogout.destroySession();
53
+ }
54
+ }else{
55
+ var seconds_float = (target_date - current_date) / 1000,
56
+ date_format = AutomaticLogout.parseDate(seconds_float);
57
+
58
+ if (diff_in_seconds >= 0){
59
+ $('.regressive-timer').text(date_format.hours + ':' + date_format.minutes + ':' + date_format.seconds);
60
+ }
61
+
62
+ setTimeout('AutomaticLogout.regressiveTimer()',1000);
63
+
64
+ diff_in_seconds--;
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Parse Date
70
+ * @param float seconds seconds_float [description]
71
+ * @return {
72
+ * days: days,
73
+ * hours: hours,
74
+ * minutes: minutes,
75
+ * seconds: seconds
76
+ * }
77
+ */
78
+ AutomaticLogout.parseDate = function(seconds_float){
79
+
80
+ var days,
81
+ hours,
82
+ minutes,
83
+ seconds;
84
+
85
+ days = parseInt(seconds_float / 86400);
86
+ seconds_float = seconds_float % 86400;
87
+
88
+ hours = parseInt(seconds_float / 3600);
89
+ seconds_float = seconds_float % 3600;
90
+
91
+ minutes = parseInt(seconds_float / 60);
92
+ seconds = parseInt(seconds_float % 60);
93
+
94
+ if(hours < 10){
95
+ hours = "0"+hours;
96
+ hours = hours.substr(0, 2);
97
+ }
98
+
99
+ if(minutes < 10){
100
+ minutes = "0"+minutes;
101
+ minutes = minutes.substr(0, 2);
102
+ }
103
+
104
+ if(seconds <=9){
105
+ seconds = "0"+seconds;
106
+ }
107
+
108
+ return {
109
+ days: days,
110
+ hours: hours,
111
+ minutes: minutes,
112
+ seconds: seconds
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Method for request ajax, check value e logout
118
+ * @return {[type]} [description]
119
+ */
120
+ AutomaticLogout.ajaxSessionTimeout = function(){
2
121
  setTimeout(function () {
3
122
  $.ajax({
4
123
  url: '/status_automatic_logout',
5
124
  success: function(data) {
6
- if (data.timeout != "null" && data.live == true){
125
+ if (data.timeout !== "null" && data.live === true){
7
126
  var response_timeout = (new Date(data.timeout).getTime());
8
127
 
9
128
  setInterval(function(){
10
129
  var now_time = (new Date().getTime());
11
130
 
12
- if ((response_timeout < now_time) == true){
131
+ if ((response_timeout < now_time) === true){
13
132
  if (confirm(data.message)){
14
133
  window.location.href = '/destroy_automatic_logout';
15
134
  }
16
135
  }
17
- }, data.seconds * 1000) // utiliza o mesmo valor em seconds que a pessoa irá ficar logado
136
+ }, (data.seconds / 2) * 1000) // utiliza o mesmo valor em seconds que a pessoa irá ficar logado
18
137
  }
19
138
  }
20
139
  });
21
140
  }, 1000); //1s
22
- }());
141
+ };
@@ -0,0 +1,4 @@
1
+ <div class="regressive-timer"
2
+ data-expires-at="<%= session[:auto_session_expires_at] %>"
3
+ data-message="<%= session[:message] %>">
4
+ </div>
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module AutomaticLogout
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -2,7 +2,7 @@ module Rails::AutomaticLogout
2
2
  module Views
3
3
  module Helpers
4
4
  def regressive_timer
5
- render 'automatic_logout/timer.js'
5
+ render 'automatic_logout/timer'
6
6
  end
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-automaticlogout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thadeu Esteves Jr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-09 00:00:00.000000000 Z
11
+ date: 2016-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -65,7 +65,7 @@ files:
65
65
  - Rakefile
66
66
  - app/assets/javascripts/automatic_logout.js
67
67
  - app/controllers/automatic_logout/sessions_controller.rb
68
- - app/views/automatic_logout/_timer.js.erb
68
+ - app/views/automatic_logout/_timer.html.erb
69
69
  - bin/console
70
70
  - bin/setup
71
71
  - config/routes.rb
@@ -1,60 +0,0 @@
1
- <script>
2
- var timer = "<%= session[:auto_session_expires_at] %>";
3
- var now_in_seconds = new Date().getTime() / 1000;
4
- var timeout_in_seconds = new Date(timer).getTime() / 1000;
5
-
6
- var target_date = new Date(timer).getTime();
7
- var dias, horas, minutos, segundos;
8
-
9
- var diff_in_seconds = new Number();
10
- diff_in_seconds = (timeout_in_seconds - now_in_seconds).toFixed(0);
11
-
12
- function regressive(){
13
-
14
- if (diff_in_seconds <= 0){
15
- if (confirm("<%= session[:message] %>")){
16
- window.location.href = '/destroy_automatic_logout';
17
- }
18
- }else{
19
- var current_date = new Date().getTime();
20
- var segundos_f = (target_date - current_date) / 1000;
21
-
22
- dias = parseInt(segundos_f / 86400);
23
- segundos_f = segundos_f % 86400;
24
-
25
- horas = parseInt(segundos_f / 3600);
26
- segundos_f = segundos_f % 3600;
27
-
28
- minutos = parseInt(segundos_f / 60);
29
- segundos = parseInt(segundos_f % 60);
30
-
31
- // Formata o número menor que dez, ex: 08, 07, ...
32
- if(horas < 10){
33
- horas = "0"+horas;
34
- horas = horas.substr(0, 2);
35
- }
36
-
37
- if(minutos < 10){
38
- minutos = "0"+minutos;
39
- minutos = minutos.substr(0, 2);
40
- }
41
-
42
- if(segundos <=9){
43
- segundos = "0"+segundos;
44
- }
45
-
46
- if (diff_in_seconds >= 0){
47
- $('.regressive-timer').text(horas + ':' + minutos + ':' + segundos);
48
- }
49
-
50
- setTimeout('regressive()',1000);
51
-
52
- diff_in_seconds--;
53
- }
54
- }
55
-
56
- regressive();
57
-
58
- </script>
59
-
60
- <div class="regressive-timer"></div>