devise_google_authenticator 0.3.6 → 0.3.7
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 +15 -0
- data/README.rdoc +2 -1
- data/app/controllers/devise/checkga_controller.rb +11 -3
- data/app/controllers/devise/displayqr_controller.rb +18 -10
- data/app/views/devise/checkga/show.html.erb +1 -1
- data/lib/devise_google_authenticatable/models/google_authenticatable.rb +4 -4
- data/lib/devise_google_authenticatable/patches/check_ga.rb +1 -1
- data/lib/devise_google_authenticatable/patches/display_qr.rb +5 -4
- data/lib/generators/devise_google_authenticator/devise_google_authenticator_generator.rb +20 -2
- metadata +15 -27
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjMxZmMyYjM2ZWFkNzg3MGUzODE4ZGY0ODc2M2FjODBkN2M2NWJkMQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZWVmODk0ZThjZDk4ZTA3YjFhNmNjOWJiMDZlYTZiNGIzYTY2YWYwYw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YTk2YzQ0OGVkYzZhOTI1NTY3NjFiYmM3ZTRiMWZiOTU4YzNlZTcxYTQzNDBl
|
10
|
+
Y2NjMDgyYWVlYzA0ZDNlZjFkMmNmNzA3YjA2YzZiMTViMWQzMzA0MmFmNTQ5
|
11
|
+
YmUzOGMxYzYzNjg1NTY4NWFiMjIzZGNhNmZjM2IxMjA5ZWEwMGU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YWZhM2YwNmM2MGJmYTAwZWYyZDM5Y2YxYTZlZGE3NjI2M2NiM2ZkMWM5MDg3
|
14
|
+
OTk4NjE2MjJhNjhhZDVjNzhjNGJhODk4MTVkZjA0MzAwNDBlODJlZGNjZjli
|
15
|
+
ZTY1NDA5ZGYyZGY4MDhjMmRjNjg4OWJkMWZiY2NkMGE3ODYwNzM=
|
data/README.rdoc
CHANGED
@@ -12,13 +12,14 @@ This is a devise[https://github.com/plataformatec/devise] extension to allow you
|
|
12
12
|
* Version 0.3.4 - Updated test cases to function properly, and tested working with Devise 2.2 (up to at least Devise 2.2.4)
|
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
|
+
* 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
|
15
16
|
|
16
17
|
== Installation
|
17
18
|
|
18
19
|
Add the gem to your Gemfile (don't forget devise too):
|
19
20
|
|
20
21
|
* gem 'devise'
|
21
|
-
* gem 'devise_google_authenticator', '0.3.
|
22
|
+
* gem 'devise_google_authenticator', '0.3.7'
|
22
23
|
|
23
24
|
Don't forget to "bundle install"
|
24
25
|
|
@@ -1,7 +1,9 @@
|
|
1
1
|
class Devise::CheckgaController < Devise::SessionsController
|
2
|
+
prepend_before_filter :devise_resource, :only => [:show]
|
2
3
|
prepend_before_filter :require_no_authentication, :only => [ :show, :update ]
|
4
|
+
|
3
5
|
include Devise::Controllers::Helpers
|
4
|
-
|
6
|
+
|
5
7
|
def show
|
6
8
|
@tmpid = params[:id]
|
7
9
|
if @tmpid.nil?
|
@@ -10,13 +12,13 @@ class Devise::CheckgaController < Devise::SessionsController
|
|
10
12
|
render :show
|
11
13
|
end
|
12
14
|
end
|
13
|
-
|
15
|
+
|
14
16
|
def update
|
15
17
|
resource = resource_class.find_by_gauth_tmp(params[resource_name]['tmpid'])
|
16
18
|
|
17
19
|
if not resource.nil?
|
18
20
|
|
19
|
-
if resource.validate_token(params[resource_name]['
|
21
|
+
if resource.validate_token(params[resource_name]['gauth_token'].to_i)
|
20
22
|
set_flash_message(:notice, :signed_in) if is_navigational_format?
|
21
23
|
sign_in(resource_name,resource)
|
22
24
|
respond_with resource, :location => after_sign_in_path_for(resource)
|
@@ -28,4 +30,10 @@ class Devise::CheckgaController < Devise::SessionsController
|
|
28
30
|
redirect_to :root
|
29
31
|
end
|
30
32
|
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def devise_resource
|
37
|
+
self.resource = resource_class.new
|
38
|
+
end
|
31
39
|
end
|
@@ -1,20 +1,19 @@
|
|
1
1
|
class Devise::DisplayqrController < DeviseController
|
2
2
|
prepend_before_filter :authenticate_scope!, :only => [:show,:update]
|
3
|
-
|
3
|
+
|
4
4
|
include Devise::Controllers::Helpers
|
5
|
-
|
5
|
+
|
6
6
|
def show
|
7
|
-
if
|
8
|
-
render :show
|
9
|
-
else
|
7
|
+
if resource.nil? || resource.gauth_secret.nil?
|
10
8
|
sign_in scope, resource, :bypass => true
|
11
9
|
redirect_to stored_location_for(scope) || :root
|
10
|
+
else
|
11
|
+
render :show
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def update
|
16
|
-
|
17
|
-
if resource.set_gauth_enabled(params[resource_name])
|
16
|
+
if resource.set_gauth_enabled(resource_params)
|
18
17
|
set_flash_message :notice, "Status Updated!"
|
19
18
|
sign_in scope, resource, :bypass => true
|
20
19
|
redirect_to stored_location_for(scope) || :root
|
@@ -22,14 +21,23 @@ class Devise::DisplayqrController < DeviseController
|
|
22
21
|
render :show
|
23
22
|
end
|
24
23
|
end
|
25
|
-
|
24
|
+
|
26
25
|
private
|
27
26
|
def scope
|
28
27
|
resource_name.to_sym
|
29
28
|
end
|
30
|
-
|
29
|
+
|
31
30
|
def authenticate_scope!
|
32
31
|
send(:"authenticate_#{resource_name}!")
|
33
32
|
self.resource = send("current_#{resource_name}")
|
34
33
|
end
|
34
|
+
|
35
|
+
def resource_params
|
36
|
+
return params.require(resource_name.to_sym).permit(:gauth_enabled) if strong_parameters_enabled?
|
37
|
+
params
|
38
|
+
end
|
39
|
+
|
40
|
+
def strong_parameters_enabled?
|
41
|
+
defined?(ActionController::StrongParameters)
|
42
|
+
end
|
35
43
|
end
|
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
<%= form_for(resource, :as => resource_name, :url => [resource_name, :checkga], :html => { :method => :put }) do |f| %>
|
4
4
|
<%= f.hidden_field :tmpid, {:value => @tmpid} %>
|
5
|
-
<%= f.text_field :
|
5
|
+
<%= f.text_field :gauth_token, :autocomplete => :off%>
|
6
6
|
<p><%= f.submit I18n.t('submit_token', {:scope => 'devise'}) %></p>
|
7
7
|
<% end %>
|
@@ -18,9 +18,9 @@ module Devise # :nodoc:
|
|
18
18
|
def get_qr
|
19
19
|
self.gauth_secret
|
20
20
|
end
|
21
|
-
|
22
|
-
def set_gauth_enabled(
|
23
|
-
self.update_without_password(
|
21
|
+
|
22
|
+
def set_gauth_enabled(params)
|
23
|
+
self.update_without_password(params)
|
24
24
|
end
|
25
25
|
|
26
26
|
def assign_tmp
|
@@ -40,7 +40,7 @@ module Devise # :nodoc:
|
|
40
40
|
valid_vals << ROTP::TOTP.new(self.get_qr).at(Time.now.ago(30*cc))
|
41
41
|
valid_vals << ROTP::TOTP.new(self.get_qr).at(Time.now.in(30*cc))
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
if valid_vals.include?(token.to_i)
|
45
45
|
return true
|
46
46
|
else
|
@@ -19,7 +19,7 @@ module DeviseGoogleAuthenticator::Patches
|
|
19
19
|
respond_with resource, :location => { :controller => 'checkga', :action => 'show', :id => tmpid}
|
20
20
|
|
21
21
|
else #It's not using, or not enabled for Google 2FA - carry on, nothing to see here.
|
22
|
-
set_flash_message(:notice, :signed_in) if
|
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
|
@@ -8,17 +8,18 @@ module DeviseGoogleAuthenticator::Patches
|
|
8
8
|
alias_method :create_original, :create
|
9
9
|
|
10
10
|
define_method :create do
|
11
|
-
build_resource
|
11
|
+
build_resource(sign_up_params)
|
12
12
|
|
13
13
|
if resource.save
|
14
|
+
yield resource if block_given?
|
14
15
|
if resource.active_for_authentication?
|
15
|
-
set_flash_message :notice, :signed_up if
|
16
|
+
set_flash_message :notice, :signed_up if is_flashing_format?
|
16
17
|
sign_in(resource_name, resource)
|
17
18
|
|
18
19
|
respond_with resource, :location => {:controller => 'displayqr', :action => 'show'}
|
19
20
|
else
|
20
|
-
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if
|
21
|
-
|
21
|
+
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
|
22
|
+
expire_data_after_sign_in!
|
22
23
|
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
|
23
24
|
end
|
24
25
|
else
|
@@ -8,12 +8,30 @@ module DeviseGoogleAuthenticator
|
|
8
8
|
|
9
9
|
def inject_devise_google_authenticator_content
|
10
10
|
path = File.join("app","models","#{file_path}.rb")
|
11
|
-
|
12
|
-
|
11
|
+
|
12
|
+
if File.exists?(path)
|
13
|
+
inject_into_file(path, "google_authenticatable, :", :after => "devise :")
|
14
|
+
inject_into_file(path, "gauth_enabled, :gauth_tmp, :gauth_tmp_datetime, :", :after => "attr_accessible :") if needs_attr_accessible?
|
15
|
+
inject_into_class(path, class_name, "\tattr_accessor :gauth_token\n")
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
hook_for :orm
|
16
20
|
|
21
|
+
private
|
22
|
+
|
23
|
+
def needs_attr_accessible?
|
24
|
+
rails_3? && !strong_parameters_enabled?
|
25
|
+
end
|
26
|
+
|
27
|
+
def rails_3?
|
28
|
+
Rails::VERSION::MAJOR == 3
|
29
|
+
end
|
30
|
+
|
31
|
+
def strong_parameters_enabled?
|
32
|
+
defined?(ActionController::StrongParameters)
|
33
|
+
end
|
34
|
+
|
17
35
|
end
|
18
36
|
end
|
19
37
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_google_authenticator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.7
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Christian Frichot
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-29 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,55 +27,48 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: railties
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '3.0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '3.0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: actionmailer
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
47
|
+
version: 3.2.12
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
54
|
+
version: 3.2.12
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: devise
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ! '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
61
|
+
version: 3.2.0
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ! '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
68
|
+
version: 3.2.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rotp
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -125,26 +114,25 @@ files:
|
|
125
114
|
homepage: http://github.com/AsteriskLabs/devise_google_authenticator
|
126
115
|
licenses:
|
127
116
|
- MIT
|
117
|
+
metadata: {}
|
128
118
|
post_install_message:
|
129
119
|
rdoc_options: []
|
130
120
|
require_paths:
|
131
121
|
- lib
|
132
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
123
|
requirements:
|
135
124
|
- - ! '>='
|
136
125
|
- !ruby/object:Gem::Version
|
137
|
-
version: 1.
|
126
|
+
version: 1.9.2
|
138
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
128
|
requirements:
|
141
129
|
- - ! '>='
|
142
130
|
- !ruby/object:Gem::Version
|
143
|
-
version: 1.
|
131
|
+
version: 2.1.0
|
144
132
|
requirements: []
|
145
133
|
rubyforge_project:
|
146
|
-
rubygems_version: 1.
|
134
|
+
rubygems_version: 2.1.11
|
147
135
|
signing_key:
|
148
|
-
specification_version:
|
136
|
+
specification_version: 4
|
149
137
|
summary: Devise Google Authenticator Extension
|
150
138
|
test_files: []
|