devise-automaticlogout 0.1.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +100 -19
- data/app/controllers/automaticlogout_controller.rb +9 -0
- data/app/views/automatic_logout/_timer.html.erb +9 -4
- data/config/routes.rb +1 -2
- data/lib/assets/javascripts/automatic_logout.js +82 -86
- data/lib/assets/javascripts/automatic_logout/classic.js +4 -0
- data/lib/assets/javascripts/automatic_logout/jquery.js +4 -0
- data/lib/assets/javascripts/automatic_logout/turbolinks-classic.js +5 -0
- data/lib/assets/javascripts/automatic_logout/turbolinks.js +5 -0
- data/lib/devise/automaticlogout/controllers.rb +22 -26
- data/lib/devise/automaticlogout/engine.rb +4 -4
- data/lib/devise/automaticlogout/helpers.rb +3 -3
- data/lib/devise/automaticlogout/version.rb +1 -1
- metadata +25 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: aca65c04b699ce7cb31abf9b49dab1febc2a4f482f625e287e9ae3f719c2d1aa
|
4
|
+
data.tar.gz: cb44d36d8a3b55fbdd67bd08d0a08f8c8d5d5ba6da4cfbcdc0f6270030413dc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc5dfb45b4b13ffef4a0fab14e88c8b5c68890b494f09da2a739dac22c16a8625fd73472e72685edba97c6bf940680e72c60188de2faac834e433e705e60ead9
|
7
|
+
data.tar.gz: 686250322f63cb25a803b2f004da123a1b5643efca8f1dbb6e794198b073d01487928012949af72c09ab17a84276d04bd5c22bfbf98479e1b38274f9413a678f
|
data/README.md
CHANGED
@@ -1,47 +1,128 @@
|
|
1
1
|
# Devise Automatic Logout
|
2
|
+
|
2
3
|
By Thadeu Esteves Jr.
|
3
4
|
|
4
|
-
|
5
|
+
Provê um logout automático da sessão numa aplicação Rails utilizando Devise. É simples e fácil.
|
6
|
+
Faz com que a sessão seja destruída após a conclusão do tempo estipulado. É de grande ajuda em sistemas que necessitam de sessão auto destrutiva, evitando de o usuário ficar logado por muito tempo de forma ociosa.
|
7
|
+
|
8
|
+
## O que isso faz?
|
9
|
+
|
10
|
+
* Força o usuário a sair da sessão (logout)
|
11
|
+
* Opção de mostrar um timer regressivo
|
12
|
+
* Opção de dar um alerta na tela ao ser deslogado
|
13
|
+
|
14
|
+
## Começando
|
15
|
+
|
16
|
+
Adicione ao seu Gemfile
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'devise-automaticlogout', '~> 1.0.1'
|
20
|
+
```
|
21
|
+
|
22
|
+
Rode o `bundle install`
|
23
|
+
|
24
|
+
## Configure o controller
|
25
|
+
|
26
|
+
No controller que você deseja aplicar o timer para o devise, use:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
devise_automatic_logout
|
30
|
+
```
|
31
|
+
|
32
|
+
Por exemplo, para o comum ApplicationController, poderia ser
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
class ApplicationController < ActionController::Base
|
36
|
+
devise_automatic_logout
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
Isso por si só, já prepara a aplicação para ler os dados do `Devise#timeout_in`, utilizando o scope padrão `user` e uma mensagem padrão de alerta.
|
41
|
+
|
42
|
+
Mas se você quiser, configurar um tempo diferente do timeout_in do devise? Fácil, use o seguinte:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
devise_automatic_logout time: 1.hour.to_i
|
46
|
+
```
|
47
|
+
|
48
|
+
Isso vai aplicar 1 hora para o logout automático.
|
49
|
+
|
50
|
+
Mas e se você quiser colocar outra mensagem? Fácil, use o seguinte:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
devise_automatic_logout time: 1.hour.to_i, message: 'SUA MENSAGEM'
|
54
|
+
```
|
5
55
|
|
6
|
-
|
7
|
-
* show for they the regressive time
|
56
|
+
Mas e se você quiser fazer, com que seja utilizado outro tipo de mapping do devise? Fácil, use o seguinte:
|
8
57
|
|
9
|
-
|
58
|
+
```ruby
|
59
|
+
devise_automatic_logout scope: 'member'
|
60
|
+
```
|
10
61
|
|
11
|
-
|
62
|
+
É possível também utilizar todos de uma vez só, por exemplo
|
12
63
|
|
13
64
|
```ruby
|
14
|
-
|
65
|
+
devise_automatic_logout time: 15.minutes.to_i, message: 'Sua sessão expirou! Faça login novamente.', scope: 'member'
|
15
66
|
```
|
16
67
|
|
17
|
-
|
68
|
+
__OBS: Quando o `time` não é passado, o timeout_in do devise será aplicado, se configurado, é claro!__
|
18
69
|
|
19
|
-
##
|
70
|
+
## Configurando Timeoutable
|
20
71
|
|
21
|
-
|
72
|
+
Veja na documentação do próprio devise como fazer isso.
|
22
73
|
|
23
|
-
|
74
|
+
[Configurar o tempo](https://github.com/plataformatec/devise#configuring-models)
|
24
75
|
|
25
|
-
[
|
76
|
+
[Mais informações sobre Timeoutable](http://www.rubydoc.info/github/plataformatec/devise/master/Devise/Models/Timeoutable)
|
26
77
|
|
27
|
-
|
78
|
+
## Configurando o timer regressivo (OBRIGATÓRIO)
|
28
79
|
|
29
|
-
|
30
|
-
|
80
|
+
Esse helper deve ser usado em qualquer view, ele é importante, pois tudo será baseado nele
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
<%= regressive_timer visible: true, alert: true %>
|
84
|
+
```
|
85
|
+
|
86
|
+
* visible: mostra um timer regressivo
|
87
|
+
* alert: lança um `window.alert` se ativado, ao final do timer
|
88
|
+
|
89
|
+
## Configurando Javascript
|
90
|
+
|
91
|
+
Adicione no seu application.js, o seguinte:
|
31
92
|
|
32
93
|
```javascript
|
33
94
|
//= require automatic_logout
|
34
95
|
```
|
35
|
-
### Configure View (OPTIONAL)
|
36
96
|
|
37
|
-
|
97
|
+
Se você usa vanilla js, adicionar também o seguinte:
|
38
98
|
|
39
|
-
```
|
40
|
-
|
99
|
+
```javascript
|
100
|
+
//= require automatic_logout/classic
|
101
|
+
```
|
102
|
+
|
103
|
+
Se você usa jQuery, use:
|
104
|
+
|
105
|
+
```javascript
|
106
|
+
//= require automatic_logout/jquery
|
107
|
+
```
|
108
|
+
|
109
|
+
Se você usa Turbolinks mais atual, use:
|
110
|
+
|
111
|
+
```javascript
|
112
|
+
//= require automatic_logout/turbolinks
|
41
113
|
```
|
42
114
|
|
43
|
-
|
115
|
+
Se você usa Turbolinks mais antigo, use:
|
44
116
|
|
117
|
+
```javascript
|
118
|
+
//= require automatic_logout/turbolinks-classic
|
119
|
+
```
|
120
|
+
|
121
|
+
Se preferir, use manualmente em algum momento desejado
|
122
|
+
|
123
|
+
```javascript
|
124
|
+
AutomaticLogout.load();
|
125
|
+
```
|
45
126
|
|
46
127
|
## Contributing
|
47
128
|
|
@@ -1,4 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
<% unless request.env["devise.skip_timeout"] %>
|
2
|
+
<span class="regressive-timer"
|
3
|
+
style="<%= "display: #{visible ? 'block' : 'none'}" %>"
|
4
|
+
data-visible="<%= visible %>"
|
5
|
+
data-alert="<%= alert.presence || false %>"
|
6
|
+
data-seconds="<%= session[:devise_autl_seconds] %>"
|
7
|
+
data-message="<%= session[:devise_autl_message] %>">
|
8
|
+
</span>
|
9
|
+
<% end %>
|
data/config/routes.rb
CHANGED
@@ -2,72 +2,105 @@
|
|
2
2
|
* Module AutomaticLogout for JS Files
|
3
3
|
* @type {[type]}
|
4
4
|
*/
|
5
|
-
|
5
|
+
window.AutomaticLogout = {};
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
var $regressiveTimer = $('.regressive-timer');
|
7
|
+
AutomaticLogout.load = function () {
|
8
|
+
var $regressiveTimer = document.querySelectorAll(".regressive-timer")[0];
|
10
9
|
|
11
|
-
($regressiveTimer.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
}
|
10
|
+
if (!!$regressiveTimer && $regressiveTimer.dataset.seconds != "") {
|
11
|
+
console.log("[AutomaticLogout] regressiveTimer started");
|
12
|
+
AutomaticLogout.regressiveTimer();
|
13
|
+
}
|
14
|
+
};
|
16
15
|
|
17
16
|
/**
|
18
17
|
* Send request for destroy session current_user
|
19
18
|
* @return {[type]} [description]
|
20
19
|
*/
|
21
|
-
AutomaticLogout.destroySession = function(){
|
22
|
-
|
23
|
-
|
20
|
+
AutomaticLogout.destroySession = function (message) {
|
21
|
+
var xhr = new XMLHttpRequest();
|
22
|
+
xhr.open("GET", "/automatic_logout/destroy", true);
|
23
|
+
|
24
|
+
xhr.onload = function () {
|
25
|
+
if (xhr.status == 200) {
|
26
|
+
var $wrapper = document.querySelectorAll(".regressive-timer")[0];
|
27
|
+
|
28
|
+
if ($wrapper && eval($wrapper.dataset.alert) && message) {
|
29
|
+
window.alert(message);
|
30
|
+
}
|
31
|
+
|
32
|
+
return (window.location.href = "/");
|
33
|
+
}
|
34
|
+
};
|
35
|
+
xhr.send();
|
36
|
+
};
|
24
37
|
|
25
38
|
/**
|
26
39
|
* Method regressive time based in session auto expired at.
|
27
40
|
* @param {[type]} date_session [description]
|
28
41
|
* @return {[type]} [description]
|
29
42
|
*/
|
30
|
-
AutomaticLogout.regressiveTimer = function(){
|
43
|
+
AutomaticLogout.regressiveTimer = function () {
|
44
|
+
/**
|
45
|
+
* Define o que vai ser impresso no DOM.
|
46
|
+
* @param {DOM Object} container
|
47
|
+
* @param {Boolean} visible
|
48
|
+
* @param {String} textContent
|
49
|
+
*/
|
50
|
+
var visibleTimer = function (container, visible, textContent) {
|
51
|
+
if (!visible) visible = "false";
|
52
|
+
if (!textContent) textContent = "00:00:00";
|
53
|
+
|
54
|
+
if (visible == "true") {
|
55
|
+
return (container.textContent = textContent);
|
56
|
+
}
|
57
|
+
};
|
58
|
+
|
31
59
|
/**
|
32
60
|
* Variables used
|
33
61
|
* @param {[type]} '.regressive-timer' [description]
|
34
62
|
* @return {[type]} [description]
|
35
63
|
*/
|
36
|
-
var
|
37
|
-
|
38
|
-
|
64
|
+
var $regressiveTimer = document.querySelector(".regressive-timer"),
|
65
|
+
data_message = String($regressiveTimer.dataset.message),
|
66
|
+
data_seconds = Number($regressiveTimer.dataset.seconds),
|
67
|
+
current_time = new Date().getTime();
|
68
|
+
|
69
|
+
visibleTimer($regressiveTimer, $regressiveTimer.dataset.visible);
|
39
70
|
|
40
71
|
var time_expired = new Date();
|
41
72
|
time_expired.setSeconds(time_expired.getSeconds() + data_seconds);
|
42
73
|
|
43
|
-
if (data_seconds != 0 && data_seconds !=
|
44
|
-
var timerDecrement = setInterval(function(){
|
45
|
-
|
46
|
-
|
47
|
-
clearInterval(timerDecrement);
|
48
|
-
|
74
|
+
if (data_seconds != 0 && data_seconds != "") {
|
75
|
+
var timerDecrement = setInterval(function () {
|
76
|
+
if (data_seconds == 0) {
|
77
|
+
clearInterval(timerDecrement);
|
49
78
|
// limpa a sessão após o ok
|
50
|
-
|
51
|
-
|
52
|
-
};
|
53
|
-
}else{
|
79
|
+
AutomaticLogout.destroySession(data_message);
|
80
|
+
} else {
|
54
81
|
//tempo descrecente
|
55
82
|
time_expired.setSeconds(time_expired.getSeconds() - 1);
|
56
|
-
|
57
|
-
var
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
83
|
+
|
84
|
+
var seconds_integer = (time_expired.getTime() - current_time) / 1000,
|
85
|
+
date_format = AutomaticLogout.parseDate(seconds_integer),
|
86
|
+
output_date_format =
|
87
|
+
date_format.hours +
|
88
|
+
":" +
|
89
|
+
date_format.minutes +
|
90
|
+
":" +
|
91
|
+
date_format.seconds;
|
92
|
+
|
93
|
+
visibleTimer(
|
94
|
+
$regressiveTimer,
|
95
|
+
$regressiveTimer.dataset.visible,
|
96
|
+
output_date_format
|
97
|
+
);
|
65
98
|
}
|
66
|
-
|
99
|
+
|
67
100
|
data_seconds -= 1;
|
68
|
-
}, 1000)
|
101
|
+
}, 1000);
|
69
102
|
}
|
70
|
-
}
|
103
|
+
};
|
71
104
|
|
72
105
|
/**
|
73
106
|
* Parse Date
|
@@ -79,12 +112,8 @@ AutomaticLogout.regressiveTimer = function(){;
|
|
79
112
|
* seconds: seconds
|
80
113
|
* }
|
81
114
|
*/
|
82
|
-
AutomaticLogout.parseDate = function(seconds_float){
|
83
|
-
|
84
|
-
var days,
|
85
|
-
hours,
|
86
|
-
minutes,
|
87
|
-
seconds;
|
115
|
+
AutomaticLogout.parseDate = function (seconds_float) {
|
116
|
+
var days, hours, minutes, seconds;
|
88
117
|
|
89
118
|
days = parseInt(seconds_float / 86400);
|
90
119
|
seconds_float = seconds_float % 86400;
|
@@ -95,57 +124,24 @@ AutomaticLogout.parseDate = function(seconds_float){
|
|
95
124
|
minutes = parseInt(seconds_float / 60);
|
96
125
|
seconds = parseInt(seconds_float % 60);
|
97
126
|
|
98
|
-
if(hours < 10){
|
99
|
-
hours = "0"+hours;
|
127
|
+
if (hours < 10) {
|
128
|
+
hours = "0" + hours;
|
100
129
|
hours = hours.substr(0, 2);
|
101
130
|
}
|
102
131
|
|
103
|
-
if(minutes < 10){
|
104
|
-
minutes = "0"+minutes;
|
132
|
+
if (minutes < 10) {
|
133
|
+
minutes = "0" + minutes;
|
105
134
|
minutes = minutes.substr(0, 2);
|
106
135
|
}
|
107
136
|
|
108
|
-
if(seconds <=9){
|
109
|
-
seconds = "0"+seconds;
|
137
|
+
if (seconds <= 9) {
|
138
|
+
seconds = "0" + seconds;
|
110
139
|
}
|
111
140
|
|
112
141
|
return {
|
113
142
|
days: days,
|
114
143
|
hours: hours,
|
115
144
|
minutes: minutes,
|
116
|
-
seconds: seconds
|
117
|
-
}
|
118
|
-
}
|
119
|
-
|
120
|
-
/**
|
121
|
-
* Method for request ajax, check value e logout
|
122
|
-
* @return {[type]} [description]
|
123
|
-
*/
|
124
|
-
AutomaticLogout.ajaxSessionTimeout = function(){
|
125
|
-
setTimeout(function () {
|
126
|
-
//TODO: Change to ES6/7 fetch() feature
|
127
|
-
$.ajax({
|
128
|
-
url: '/devise/automatic_logout/status',
|
129
|
-
success: function(data) {
|
130
|
-
if (data.seconds !== "null" && data.live === true){
|
131
|
-
|
132
|
-
var data_message = data.message, data_seconds = data.seconds;
|
133
|
-
|
134
|
-
if (data_seconds != 0 && data_seconds != ''){
|
135
|
-
var timerDecrement = setInterval(function(){
|
136
|
-
if (data_seconds == 0) {
|
137
|
-
clearInterval(timerDecrement);
|
138
|
-
// limpa a sessão após o ok do alertify
|
139
|
-
if (confirm(data_message)) {
|
140
|
-
AutomaticLogout.destroySession();
|
141
|
-
}
|
142
|
-
}
|
143
|
-
|
144
|
-
data_seconds -= 1;
|
145
|
-
}, 1000)
|
146
|
-
}
|
147
|
-
}
|
148
|
-
}
|
149
|
-
});
|
150
|
-
}, 1000); //1s
|
151
|
-
};
|
145
|
+
seconds: seconds,
|
146
|
+
};
|
147
|
+
};
|
@@ -1,35 +1,31 @@
|
|
1
1
|
module Devise
|
2
|
-
module
|
2
|
+
module Automaticlogout
|
3
3
|
module Controllers
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
|
7
|
-
::ApplicationController.before_action do |c|
|
8
|
-
if current_user.present?
|
9
|
-
key_classify = Devise.mappings.keys.first
|
10
|
-
resource_name = Devise.mappings[key_classify].class_name.to_s
|
11
|
-
# get instance for class using devise
|
12
|
-
c.session[:seconds] = resource_name.classify.constantize.timeout_in.seconds.to_i
|
13
|
-
# I18n.t devise.automaticlogout.message
|
14
|
-
c.session[:message] = I18n.t 'devise.automaticlogout.message' || 'Session expired!'
|
15
|
-
end
|
16
|
-
end
|
6
|
+
DEFAULT_MESSAGE = 'Session expired! You will be redirect.'.freeze
|
17
7
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
message
|
23
|
-
|
24
|
-
}, status: :ok
|
25
|
-
end
|
8
|
+
module ClassMethods
|
9
|
+
def devise_automatic_logout(options = {})
|
10
|
+
prepend_before_action do |c|
|
11
|
+
time = options.fetch(:time, nil)
|
12
|
+
message = options.fetch(:message, DEFAULT_MESSAGE)
|
13
|
+
scope = options.fetch(:scope, 'user')
|
26
14
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
15
|
+
seconds = if time&.positive?
|
16
|
+
time
|
17
|
+
else
|
18
|
+
mapping = Devise.mappings[scope.to_sym]
|
19
|
+
return unless mapping
|
20
|
+
|
21
|
+
mapping.to.timeout_in.seconds.to_i
|
22
|
+
end
|
23
|
+
|
24
|
+
if seconds
|
25
|
+
c.session[:devise_autl_message] = message
|
26
|
+
c.session[:devise_autl_seconds] = seconds
|
27
|
+
end
|
28
|
+
end
|
33
29
|
end
|
34
30
|
end
|
35
31
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module Devise
|
2
|
-
module
|
2
|
+
module Automaticlogout
|
3
3
|
class Engine < ::Rails::Engine
|
4
|
-
|
4
|
+
engine_name 'devise_automaticlogout'
|
5
5
|
|
6
6
|
ActiveSupport.on_load :action_controller do
|
7
|
-
include Devise::
|
7
|
+
include Devise::Automaticlogout::Controllers
|
8
8
|
end
|
9
9
|
|
10
10
|
ActiveSupport.on_load :action_view do
|
11
|
-
include Devise::
|
11
|
+
include Devise::Automaticlogout::Helpers
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Devise
|
2
|
-
module
|
2
|
+
module Automaticlogout
|
3
3
|
module Helpers
|
4
|
-
def regressive_timer
|
5
|
-
render 'automatic_logout/timer'
|
4
|
+
def regressive_timer(visible: false, alert: false)
|
5
|
+
render 'automatic_logout/timer', visible: visible, alert: alert
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
metadata
CHANGED
@@ -1,83 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise-automaticlogout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thadeu Esteves Jr
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: devise
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: jquery-rails
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
33
|
+
version: '4'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '4'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rubocop
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - "
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - "
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: sqlite3
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - "
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - "
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
69
|
description: Provides automatic session timeout in a Rails Devise application.
|
@@ -90,19 +76,24 @@ files:
|
|
90
76
|
- MIT-LICENSE
|
91
77
|
- README.md
|
92
78
|
- Rakefile
|
79
|
+
- app/controllers/automaticlogout_controller.rb
|
93
80
|
- app/views/automatic_logout/_timer.html.erb
|
94
81
|
- config/routes.rb
|
95
82
|
- lib/assets/javascripts/automatic_logout.js
|
83
|
+
- lib/assets/javascripts/automatic_logout/classic.js
|
84
|
+
- lib/assets/javascripts/automatic_logout/jquery.js
|
85
|
+
- lib/assets/javascripts/automatic_logout/turbolinks-classic.js
|
86
|
+
- lib/assets/javascripts/automatic_logout/turbolinks.js
|
96
87
|
- lib/devise/automaticlogout.rb
|
97
88
|
- lib/devise/automaticlogout/controllers.rb
|
98
89
|
- lib/devise/automaticlogout/engine.rb
|
99
90
|
- lib/devise/automaticlogout/helpers.rb
|
100
91
|
- lib/devise/automaticlogout/version.rb
|
101
|
-
homepage: https://github.com/
|
92
|
+
homepage: https://github.com/thadeu/devise-automaticlogout
|
102
93
|
licenses:
|
103
94
|
- MIT
|
104
95
|
metadata: {}
|
105
|
-
post_install_message:
|
96
|
+
post_install_message:
|
106
97
|
rdoc_options: []
|
107
98
|
require_paths:
|
108
99
|
- lib
|
@@ -117,9 +108,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
108
|
- !ruby/object:Gem::Version
|
118
109
|
version: '0'
|
119
110
|
requirements: []
|
120
|
-
rubyforge_project:
|
121
|
-
rubygems_version: 2.
|
122
|
-
signing_key:
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.7.6
|
113
|
+
signing_key:
|
123
114
|
specification_version: 4
|
124
115
|
summary: Provides automatic session timeout in a Rails Devise application.
|
125
116
|
test_files: []
|