devise_google_authenticator 0.3.7 → 0.3.8
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 +8 -8
- data/README.rdoc +2 -1
- data/app/controllers/devise/checkga_controller.rb +10 -0
- data/app/controllers/devise/displayqr_controller.rb +1 -1
- data/config/locales/en.yml +5 -1
- data/lib/devise_google_authenticatable/models/google_authenticatable.rb +14 -1
- data/lib/devise_google_authenticatable/patches/check_ga.rb +2 -3
- data/lib/devise_google_authenticator.rb +3 -0
- data/lib/generators/devise_google_authenticator/install_generator.rb +3 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjBmNWJmYjg3Yzk3NWE4ZmU1Njg1OTYyOTEwODE0MzUxMDU0ODBjMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDNmNDMwNmQ2ZjgzOTYyNmRlMjY0Y2ZjZGFlNWRiM2QzNmRiOGJhNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTdhZGZmZmFhYjEyMzk3NDEwYmU0ODlhNWViMzQ2MTI4YzA4ZjllNmMxYzhk
|
10
|
+
Y2VlMDNmOTM0NTQ5ZmQ5M2Y5OWMyYjFmNzg0MTVjZWM3MTVlOTMyNWVjMDI0
|
11
|
+
NTI0NzUyN2RmYmViMWNlZDQ0OWIzYzNiY2NjNTBjOTdkYjc1NTI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZTk2MTk2ODA1YzJkM2E0ZDY5ZmM1YTNhOGJlZTM0ZDZjYjYzNWY1YzUzNzg4
|
14
|
+
OWI3Y2U4MDMxN2MwNDg3MTJmM2JkNjI4MzdkOTdhMDcxY2I5ZDNmZTVhYjE3
|
15
|
+
MDE4NmNkODBkNTg4MmMyMDkyZjhkNGRmNjQxMzY5OTQxYTlkMWE=
|
data/README.rdoc
CHANGED
@@ -13,13 +13,14 @@ This is a devise[https://github.com/plataformatec/devise] extension to allow you
|
|
13
13
|
* Version 0.3.5 - Updated README for Rails apps with existing users. (Thanks Jon Collier)
|
14
14
|
* Version 0.3.6 - Slight updates - increased key size, more open gemspec, updated en.yml. (Thanks Michael Guymon)
|
15
15
|
* Version 0.3.7 - Support for current Devise (3.2.0) and Rails4 (Thanks https://github.com/ronald05arias) - integration test still broke - need to address this
|
16
|
+
* Version 0.3.8 - Support for remembering the token authentication. (i.e. don't request the token for a configurable amount of time Thanks https://github.com/blahblahblah-) - and seriously, I'm going to try and refactor all the integration tests with Rspec.
|
16
17
|
|
17
18
|
== Installation
|
18
19
|
|
19
20
|
Add the gem to your Gemfile (don't forget devise too):
|
20
21
|
|
21
22
|
* gem 'devise'
|
22
|
-
* gem 'devise_google_authenticator', '0.3.
|
23
|
+
* gem 'devise_google_authenticator', '0.3.8'
|
23
24
|
|
24
25
|
Don't forget to "bundle install"
|
25
26
|
|
@@ -22,11 +22,21 @@ class Devise::CheckgaController < Devise::SessionsController
|
|
22
22
|
set_flash_message(:notice, :signed_in) if is_navigational_format?
|
23
23
|
sign_in(resource_name,resource)
|
24
24
|
respond_with resource, :location => after_sign_in_path_for(resource)
|
25
|
+
|
26
|
+
if not resource.class.ga_remembertime.nil?
|
27
|
+
cookies.signed[:gauth] = {
|
28
|
+
:value => resource.email << "," << Time.now.to_i.to_s,
|
29
|
+
:secure => !(Rails.env.test? || Rails.env.development?),
|
30
|
+
:expires => (resource.class.ga_remembertime + 1.days).from_now
|
31
|
+
}
|
32
|
+
end
|
25
33
|
else
|
34
|
+
set_flash_message(:error, :error)
|
26
35
|
redirect_to :root
|
27
36
|
end
|
28
37
|
|
29
38
|
else
|
39
|
+
set_flash_message(:error, :error)
|
30
40
|
redirect_to :root
|
31
41
|
end
|
32
42
|
end
|
@@ -14,7 +14,7 @@ class Devise::DisplayqrController < DeviseController
|
|
14
14
|
|
15
15
|
def update
|
16
16
|
if resource.set_gauth_enabled(resource_params)
|
17
|
-
set_flash_message :notice,
|
17
|
+
set_flash_message :notice, :status
|
18
18
|
sign_in scope, resource, :bypass => true
|
19
19
|
redirect_to stored_location_for(scope) || :root
|
20
20
|
else
|
data/config/locales/en.yml
CHANGED
@@ -49,6 +49,19 @@ module Devise # :nodoc:
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
def require_token?(cookie)
|
53
|
+
if self.class.ga_remembertime.nil? || cookie.blank?
|
54
|
+
return true
|
55
|
+
end
|
56
|
+
array = cookie.to_s.split ','
|
57
|
+
if array.count != 2
|
58
|
+
return true
|
59
|
+
end
|
60
|
+
last_logged_in_email = array[0]
|
61
|
+
last_logged_in_time = array[1].to_i
|
62
|
+
return last_logged_in_email != self.email || (Time.now.to_i - last_logged_in_time) > self.class.ga_remembertime.to_i
|
63
|
+
end
|
64
|
+
|
52
65
|
private
|
53
66
|
|
54
67
|
def assign_auth_secret
|
@@ -61,7 +74,7 @@ module Devise # :nodoc:
|
|
61
74
|
def find_by_gauth_tmp(gauth_tmp)
|
62
75
|
find(:first, :conditions => {:gauth_tmp => gauth_tmp})
|
63
76
|
end
|
64
|
-
::Devise::Models.config(self, :ga_timeout, :ga_timedrift)
|
77
|
+
::Devise::Models.config(self, :ga_timeout, :ga_timedrift, :ga_remembertime)
|
65
78
|
end
|
66
79
|
end
|
67
80
|
end
|
@@ -11,21 +11,20 @@ module DeviseGoogleAuthenticator::Patches
|
|
11
11
|
|
12
12
|
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
|
13
13
|
|
14
|
-
if resource.respond_to?(:get_qr) and resource.gauth_enabled.to_i != 0 #Therefore we can quiz for a QR
|
14
|
+
if resource.respond_to?(:get_qr) and resource.gauth_enabled.to_i != 0 and resource.require_token?(cookies.signed[:gauth]) #Therefore we can quiz for a QR
|
15
15
|
tmpid = resource.assign_tmp #assign a temporary key and fetch it
|
16
16
|
warden.logout #log the user out
|
17
17
|
|
18
18
|
#we head back into the checkga controller with the temporary id
|
19
19
|
respond_with resource, :location => { :controller => 'checkga', :action => 'show', :id => tmpid}
|
20
20
|
|
21
|
-
else #It's not using, or not enabled for Google 2FA - carry on, nothing to see here.
|
21
|
+
else #It's not using, or not enabled for Google 2FA, OR is remembering token and therefore not asking for the moment - carry on, nothing to see here.
|
22
22
|
set_flash_message(:notice, :signed_in) if is_flashing_format?
|
23
23
|
sign_in(resource_name, resource)
|
24
24
|
respond_with resource, :location => after_sign_in_path_for(resource)
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
28
|
-
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
@@ -12,6 +12,9 @@ module DeviseGoogleAuthenticator
|
|
12
12
|
" # config.ga_timeout = 3.minutes\n\n" +
|
13
13
|
" # Change time drift settings for valid token values. To change the default, uncomment and change the below:\n" +
|
14
14
|
" # config.ga_timedrift = 3\n\n" +
|
15
|
+
" # Change setting to how long to remember device before requiring another token. Change to nil to turn feature off.\n" +
|
16
|
+
" # To change the default, uncomment and change the below:\n" +
|
17
|
+
" # config.ga_remembertime = 1.month\n\n" +
|
15
18
|
"\n", :before => /end[ |\n|]+\Z/
|
16
19
|
end
|
17
20
|
|