devise_ott 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b9846aaa11889a03b3c8391987c55611070e4dd
4
- data.tar.gz: 38d7c221a3a63e6ef0bfb7e310d092929d67db0b
3
+ metadata.gz: e8a617406c205831c5ddc559c0fd82c259272887
4
+ data.tar.gz: c22ebfecba37621d3dbcc84549387e247eb16746
5
5
  SHA512:
6
- metadata.gz: 3f68ab6b8ef184bb98368525b540c1bcb22427775de2fbf5ed0a11cf7de3afc8377d74996c96abe281ab6501b7d2c5ff24869563f7193464f83037600ca5f9dd
7
- data.tar.gz: 97b54045d2bb8dcf311e4d8d95e0ff3473773e777e30bfba0546f7d32be889b140c73b96ad8ba11fbc95772cc724fbdcab89a8252beeabefe24206a5919deb87
6
+ metadata.gz: a202e73b2a03c3a1636a487f02479f5a937ed9236f7043123fa192fb67205bf76436daf6b82a18ddb1313709d58987eb1e04355cd3eb6e8cc9443ae4ba85bb91
7
+ data.tar.gz: 16f9c9b1ae8eb8d5e5c0f18bb0c45a30160b7c83bfe1e7fc299812268db3d18e5ea10ffb71a555003e375a1db0695e184e916d36e5aa11ddf5a51590fd236312
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- devise_ott (0.0.7)
4
+ devise_ott (0.0.8)
5
5
  devise
6
6
  redis
7
7
 
@@ -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
@@ -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,auth,opts|
21
- if auth.winning_strategy.is_a?(DeviseOtt::Strategies::OttAuthentication)
22
- auth.session[:ott_authenticated] = true
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
- resource = mapping.to.find_for_ott_authentication(ott_token)
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
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module DeviseOtt
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -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_'))
@@ -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.7
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-01-14 00:00:00.000000000 Z
11
+ date: 2015-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise