devise_ott 0.0.7 → 0.0.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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.rdoc +1 -1
- data/lib/devise_ott.rb +4 -3
- data/lib/devise_ott/strategies/ott_authetication.rb +4 -1
- data/lib/devise_ott/tokens.rb +9 -3
- data/lib/devise_ott/version.rb +1 -1
- data/test/devise_ott_tokens_test.rb +6 -1
- data/test/support/seed.rb +1 -1
- 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: e8a617406c205831c5ddc559c0fd82c259272887
|
4
|
+
data.tar.gz: c22ebfecba37621d3dbcc84549387e247eb16746
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a202e73b2a03c3a1636a487f02479f5a937ed9236f7043123fa192fb67205bf76436daf6b82a18ddb1313709d58987eb1e04355cd3eb6e8cc9443ae4ba85bb91
|
7
|
+
data.tar.gz: 16f9c9b1ae8eb8d5e5c0f18bb0c45a30160b7c83bfe1e7fc299812268db3d18e5ea10ffb71a555003e375a1db0695e184e916d36e5aa11ddf5a51590fd236312
|
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -25,7 +25,7 @@ Add :ott_authentication to your model
|
|
25
25
|
## Usage
|
26
26
|
|
27
27
|
Programatically register token for a given user:
|
28
|
-
DeviseOtt::Tokens.instance.register('random_token', 'user@email.com', COUNT, EXPIRES_SECONDS) # COUNT and EXPIRES_SECONDS are integers
|
28
|
+
DeviseOtt::Tokens.instance.register('random_token', 'user@email.com', 'requester@email.com', COUNT, EXPIRES_SECONDS) # COUNT and EXPIRES_SECONDS are integers
|
29
29
|
|
30
30
|
Login using One-Time Token:
|
31
31
|
include ott_token following parameter in the URL. Example: localhost:3000/?ott_token=random_token
|
data/lib/devise_ott.rb
CHANGED
@@ -17,8 +17,9 @@ end
|
|
17
17
|
|
18
18
|
Warden::Strategies.add(:ott_authentication, DeviseOtt::Strategies::OttAuthentication)
|
19
19
|
Devise.add_module :ott_authentication, :strategy => true, :model => 'devise_ott/models/ott_authentication'
|
20
|
-
Warden::Manager.after_authentication do |user,
|
21
|
-
if
|
22
|
-
|
20
|
+
Warden::Manager.after_authentication do |user,warden,opts|
|
21
|
+
if warden.winning_strategy.is_a?(DeviseOtt::Strategies::OttAuthentication)
|
22
|
+
warden.session[:ott_authenticated] = true
|
23
|
+
warden.session[:ott_granted_to_email] = warden.winning_strategy.granted_to_email
|
23
24
|
end
|
24
25
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module DeviseOtt
|
2
2
|
module Strategies
|
3
3
|
class OttAuthentication < Devise::Strategies::Authenticatable
|
4
|
+
attr_reader :granted_to_email
|
5
|
+
|
4
6
|
def valid?
|
5
7
|
super || valid_for_ott_auth?
|
6
8
|
end
|
@@ -10,7 +12,8 @@ module DeviseOtt
|
|
10
12
|
|
11
13
|
return unless valid_for_ott_auth?
|
12
14
|
|
13
|
-
|
15
|
+
@granted_to_email = DeviseOtt::Tokens.instance.granted_to_email(ott_token)
|
16
|
+
resource = mapping.to.find_for_ott_authentication(ott_token)
|
14
17
|
|
15
18
|
return unless resource
|
16
19
|
|
data/lib/devise_ott/tokens.rb
CHANGED
@@ -15,8 +15,8 @@ module DeviseOtt
|
|
15
15
|
|
16
16
|
# register one time token for given user in redis
|
17
17
|
# the generated token will have a field "email" in order to identify the associated user later
|
18
|
-
def register(token, email, access_count, expire)
|
19
|
-
save_config(token, {email: email, access_count: access_count})
|
18
|
+
def register(token, email, granted_to_email, access_count, expire)
|
19
|
+
save_config(token, {email: email, granted_to_email: granted_to_email, access_count: access_count})
|
20
20
|
@redis.expire(token, expire)
|
21
21
|
|
22
22
|
token
|
@@ -46,6 +46,12 @@ module DeviseOtt
|
|
46
46
|
config && config[:email]
|
47
47
|
end
|
48
48
|
|
49
|
+
# returns config hash for a given token
|
50
|
+
def granted_to_email(token)
|
51
|
+
config = load_config(token)
|
52
|
+
config && config[:granted_to_email]
|
53
|
+
end
|
54
|
+
|
49
55
|
private
|
50
56
|
def save_config(token, hash)
|
51
57
|
time_left = ttl(token)
|
@@ -63,4 +69,4 @@ module DeviseOtt
|
|
63
69
|
@redis.ttl(token)
|
64
70
|
end
|
65
71
|
end
|
66
|
-
end
|
72
|
+
end
|
data/lib/devise_ott/version.rb
CHANGED
@@ -17,7 +17,7 @@ class DeviseOttTest < ActiveSupport::TestCase
|
|
17
17
|
|
18
18
|
test 'redis revokes' do
|
19
19
|
assert_equal(1, DeviseOtt::Tokens.instance.revoke('random_token'))
|
20
|
-
DeviseOtt::Tokens.instance.register('random_token', 'test1@example.com', 1040, 100100)
|
20
|
+
DeviseOtt::Tokens.instance.register('random_token', 'test1@example.com', 'requester@example.com', 1040, 100100)
|
21
21
|
end
|
22
22
|
|
23
23
|
test 'accesses token for a given email if allowed' do
|
@@ -33,6 +33,11 @@ class DeviseOttTest < ActiveSupport::TestCase
|
|
33
33
|
assert_equal('test1@example.com', DeviseOtt::Tokens.instance.email('random_token'))
|
34
34
|
end
|
35
35
|
|
36
|
+
test 'returns correct requester email if allowed' do
|
37
|
+
DeviseOtt::Tokens.instance.access('random_token', 'test1@example.com')
|
38
|
+
assert_equal('requester@example.com', DeviseOtt::Tokens.instance.granted_to_email('random_token'))
|
39
|
+
end
|
40
|
+
|
36
41
|
test 'denies email access unless allowed' do
|
37
42
|
DeviseOtt::Tokens.instance.access('random_token', 'test1@example.com')
|
38
43
|
assert_equal(nil, DeviseOtt::Tokens.instance.email('random_token_'))
|
data/test/support/seed.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
User.create(email:'test1@example.com')
|
2
2
|
User.create(email:'test2@example.com')
|
3
3
|
|
4
|
-
DeviseOtt::Tokens.instance.register('random_token', 'test1@example.com', 1040, 100100)
|
4
|
+
DeviseOtt::Tokens.instance.register('random_token', 'test1@example.com', 'requester@example.com', 1040, 100100)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_ott
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iuri Gagnidze
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: devise
|