devise-doorkeeper 1.0.1 → 1.1.0

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: 86671a2c38cb4de8ee35adcc31882b88fc3b4c24
4
- data.tar.gz: d6e06702ab8a1b5c9cca0db54b163a05f39f1dad
3
+ metadata.gz: 4b64812bca11084c10439cfe6377381921d8d6b8
4
+ data.tar.gz: 0b004f998bb7d52e3deaf239e9379f8bf422502f
5
5
  SHA512:
6
- metadata.gz: a0532a3a220ce25b987e937a49198e1035448647b2a85f870a39a99555e8ef88c7f919a839501755c1f2fc7ef358cad018985f8925cce4cc44989cd6336ad074
7
- data.tar.gz: ce9de5eb268a458ce419bae539c0d7a2640bdde424feccb0c7704e72aa35f2f4db78f3483349998a92072615c0ec9f2b91384aa17c8394d59ac886f371cae90f
6
+ metadata.gz: c7530c5824b1d5f514eb0b925d824e19131a8d3835eb926e4947bd768c0f762e576d7e226d2dafe770ca910ac6a3eae0df402edf802ce8041a58374a8364bdd6
7
+ data.tar.gz: 44401f062a0dcf5ee444648a93572a719569d8c1e3158c82909870a5bc8aab536cf1efcc29a391cd736ad9a6d5e170fcc5c2c2974b957f0e648345a490f50f68
data/README.md CHANGED
@@ -26,12 +26,25 @@ gem 'devise-doorkeeper'
26
26
 
27
27
  #### Update doorkeeper config
28
28
  Update your `config/initializers/doorkeeper.rb` to call
29
- `Devise::Doorkeeper.configure(self)`.
29
+ `Devise::Doorkeeper.configure_doorkeeper(self)`.
30
30
 
31
31
  ```ruby
32
32
  # config/initializers/doorkeeper.rb
33
33
  Doorkeeper.configure do
34
- Devise::Doorkeeper.configure(self)
34
+ Devise::Doorkeeper.configure_doorkeeper(self)
35
+
36
+ # extra configuration goes below
37
+ end
38
+ ```
39
+
40
+ #### Update devise config
41
+ Update your `config/initializers/devise.rb` to call
42
+ `Devise::Doorkeeper.configure_devise`.
43
+
44
+ ```ruby
45
+ # config/initializers/devise.rb
46
+ Devise.setup do |config|
47
+ Devise::Doorkeeper.configure_devise(config)
35
48
 
36
49
  # extra configuration goes below
37
50
  end
@@ -3,7 +3,14 @@ require 'devise/strategies/doorkeeper'
3
3
 
4
4
  module Devise
5
5
  module Doorkeeper
6
- def self.configure(base)
6
+ def self.configure_devise(config)
7
+ config.warden do |manager|
8
+ require 'devise/doorkeeper/doorkeeper_failure_app'
9
+ manager.failure_app = Devise::Doorkeeper::DoorkeeperFailureApp
10
+ end
11
+ end
12
+
13
+ def self.configure_doorkeeper(base)
7
14
  base.instance_eval do
8
15
  resource_owner_authenticator do
9
16
  current_user || warden.authenticate!(scope: :user)
@@ -0,0 +1,25 @@
1
+ require 'devise/failure_app'
2
+ require 'devise/strategies/doorkeeper'
3
+
4
+ module Devise
5
+ module Doorkeeper
6
+ class DoorkeeperFailureApp < ::Devise::FailureApp
7
+ def respond
8
+ if warden_message == Devise::Strategies::Doorkeeper::WARDEN_INVALID_TOKEN_MESSAGE
9
+ invalid_oauth_token
10
+ else
11
+ super
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def invalid_oauth_token
18
+ error = ::Doorkeeper::OAuth::InvalidTokenResponse.new
19
+ headers.merge! error.headers
20
+ self.response_body = error.body.to_json
21
+ self.status = error.status
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module Doorkeeper
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -6,6 +6,8 @@ require 'devise/strategies/authenticatable'
6
6
  module Devise
7
7
  module Strategies
8
8
  class Doorkeeper < ::Devise::Strategies::Authenticatable
9
+ WARDEN_INVALID_TOKEN_MESSAGE = :invalid_token
10
+
9
11
  def valid?
10
12
  credentials = ::Doorkeeper::OAuth::Token.from_request(request, *access_token_methods)
11
13
  credentials.present?
@@ -46,7 +48,7 @@ module Devise
46
48
  end
47
49
 
48
50
  def invalid_token
49
- fail!(:invalid_token)
51
+ fail!(WARDEN_INVALID_TOKEN_MESSAGE)
50
52
  throw :warden
51
53
  end
52
54
 
@@ -58,12 +60,3 @@ module Devise
58
60
  end
59
61
  Warden::Strategies.add(:doorkeeper, Devise::Strategies::Doorkeeper)
60
62
  Devise.add_module(:doorkeeper, strategy: true)
61
-
62
-
63
- # if ///
64
- # error = OAuth::InvalidTokenResponse.from_access_token(doorkeeper_token)
65
- # options = doorkeeper_unauthorized_render_options
66
- # else
67
- # error = OAuth::ForbiddenTokenResponse.from_scopes(scopes)
68
- # options = doorkeeper_forbidden_render_options
69
- # end
@@ -1,6 +1,7 @@
1
1
  # Use this hook to configure devise mailer, warden hooks and so forth.
2
2
  # Many of these configuration options can be set straight in your model.
3
3
  Devise.setup do |config|
4
+ Devise::Doorkeeper.configure_devise(config)
4
5
  # The secret key used by Devise. Devise uses this key to generate
5
6
  # random tokens. Changing this key will render invalid all existing
6
7
  # confirmation, reset password and unlock tokens in the database.
@@ -1,5 +1,5 @@
1
1
  Doorkeeper.configure do
2
- Devise::Doorkeeper.configure(self)
2
+ Devise::Doorkeeper.configure_doorkeeper(self)
3
3
 
4
4
  # Change the ORM that doorkeeper will use.
5
5
  # Currently supported options are :active_record, :mongoid2, :mongoid3,
@@ -99,7 +99,7 @@ Doorkeeper.configure do
99
99
  # end
100
100
 
101
101
  # WWW-Authenticate Realm (default "Doorkeeper").
102
- # realm "Doorkeeper"
102
+ realm 'DeviseDoorkeeperApp'
103
103
 
104
104
  # Allow dynamic query parameters (disabled by default)
105
105
  # Some applications require dynamic query parameters on their request_uri
@@ -30,6 +30,7 @@ RSpec.describe 'OAuth bearer token requests', type: :request do
30
30
  get request_path, params, headers
31
31
  end
32
32
  it { expect(response.status).to eq 401 }
33
+ it { expect(response.headers).to include('WWW-Authenticate' => 'Bearer realm="DeviseDoorkeeperApp", error="invalid_token", error_description="The access token is invalid"') }
33
34
  end
34
35
  context 'with revoked access token' do
35
36
  with :access_token, revoked_at: 1.year.ago
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-doorkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-18 00:00:00.000000000 Z
11
+ date: 2015-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -209,6 +209,7 @@ files:
209
209
  - Rakefile
210
210
  - devise-doorkeeper.gemspec
211
211
  - lib/devise/doorkeeper.rb
212
+ - lib/devise/doorkeeper/doorkeeper_failure_app.rb
212
213
  - lib/devise/doorkeeper/version.rb
213
214
  - lib/devise/strategies/doorkeeper.rb
214
215
  - spec/dummy/.rspec