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 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