tiddle 0.4.0 → 0.4.1

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