tiddle 0.4.0 → 0.4.1

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: aca3f210e267f73c0e067d27533534c9c3f9c683
4
- data.tar.gz: 460622c0502eb261e06b2cf617740ef500dbbbf0
3
+ metadata.gz: cfe845a06fabc2a40cd22474e1312ca1647b8c0d
4
+ data.tar.gz: b4fde58413f9050dae56a67864843b82de0f5fa5
5
5
  SHA512:
6
- metadata.gz: 5d8b78acb6c499efa52fee1f38b639fc1541170badf1ecfbeafa9509677b856ef09a2921637b057f1aa6ba5c383fd5b4a7ebc76105053ff35f7ec2b03f48dd1e
7
- data.tar.gz: 1b2f8360d54fb6fac59a42bc90d3340236fb10b7626465afa45ba66bdb6d402bf49d2b96f077f3c63e0493d9787d754f0cd8726ff562776c286f5570fa496e5a
6
+ metadata.gz: a348ea2217110695c94bab0d7a2133533854bd0e09d23aceec68cfcd6d51bf1796f4e3bc67755c18f64b7d834e2b3dda69e3320eb7bec7056df168b8cd14b4e8
7
+ data.tar.gz: a4fb1d612c2e9f675273b184544269de508138e8016f512baba57ac3c551f9e1c5e96e0ce96cbcbad6f999fc9aff61f160dd3d248d96db76770c7a07acf0dd49
@@ -1,5 +1,6 @@
1
1
  require 'devise/strategies/authenticatable'
2
2
  require 'tiddle/model_name'
3
+ require 'tiddle/token_issuer'
3
4
 
4
5
  module Devise
5
6
  module Strategies
@@ -11,11 +12,10 @@ module Devise
11
12
  resource = mapping.to.find_for_authentication(email: email_from_headers)
12
13
  return fail(:invalid_token) unless resource
13
14
 
14
- resource.authentication_tokens.each do |token|
15
- if Devise.secure_compare(token.body, token_from_headers)
16
- touch_token(token)
17
- return success!(resource)
18
- end
15
+ token = Tiddle::TokenIssuer.build.find_token(resource, token_from_headers)
16
+ if (token)
17
+ touch_token(token)
18
+ return success!(resource)
19
19
  end
20
20
 
21
21
  fail(:invalid_token)
@@ -23,10 +23,14 @@ module Tiddle
23
23
  end
24
24
 
25
25
  def expire_token(resource, request)
26
- resource.authentication_tokens
27
- .where(body: request.headers["X-#{ModelName.new.with_dashes(resource)}-TOKEN"])
28
- .take!
29
- .destroy
26
+ find_token(resource, request.headers["X-#{ModelName.new.with_dashes(resource)}-TOKEN"])
27
+ .try(:destroy)
28
+ end
29
+
30
+ def find_token(resource, token_from_headers)
31
+ resource.authentication_tokens.detect do |token|
32
+ Devise.secure_compare(token.body, token_from_headers)
33
+ end
30
34
  end
31
35
 
32
36
  def purge_old_tokens(resource)
@@ -1,3 +1,3 @@
1
1
  module Tiddle
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'bundler/setup'
1
2
  require 'simplecov'
2
3
  require 'coveralls'
3
4
 
data/spec/tiddle_spec.rb CHANGED
@@ -36,6 +36,25 @@ describe Tiddle do
36
36
  end
37
37
  end
38
38
 
39
+ describe "find_token" do
40
+
41
+ before do
42
+ @admin_user = AdminUser.create!(email: "test@example.com", password: "12345678")
43
+ @token = Tiddle.create_and_return_token(@admin_user, FakeRequest.new)
44
+ end
45
+
46
+ it "returns a token from the database" do
47
+ result = Tiddle::TokenIssuer.build.find_token(@admin_user, @token)
48
+ expect(result).to eq @admin_user.authentication_tokens.last
49
+ end
50
+
51
+ it 'only returns tokens belonging to the resource' do
52
+ other_user = AdminUser.create!(email: "test-other@example.com", password: "12345678")
53
+ result = Tiddle::TokenIssuer.build.find_token(other_user, @token)
54
+ expect(result).to be_nil
55
+ end
56
+ end
57
+
39
58
  describe "expire_token" do
40
59
 
41
60
  before do
data/tiddle.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.required_ruby_version = '>= 2.1.0'
21
21
 
22
- spec.add_dependency "devise", "~> 3.4.1"
22
+ spec.add_dependency "devise", ">= 3.4.1", "< 3.6"
23
23
  spec.add_dependency "activerecord", "~> 4.2.0"
24
24
  spec.add_development_dependency "bundler", "~> 1.7"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiddle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Niedzielski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-11 00:00:00.000000000 Z
11
+ date: 2015-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.4.1
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3.6'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 3.4.1
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.6'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activerecord
29
35
  requirement: !ruby/object:Gem::Requirement