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 +4 -4
- data/README.md +15 -2
- data/lib/devise/doorkeeper.rb +8 -1
- data/lib/devise/doorkeeper/doorkeeper_failure_app.rb +25 -0
- data/lib/devise/doorkeeper/version.rb +1 -1
- data/lib/devise/strategies/doorkeeper.rb +3 -10
- data/spec/dummy/config/initializers/devise.rb +1 -0
- data/spec/dummy/config/initializers/doorkeeper.rb +2 -2
- data/spec/requests/oauth/bearer_tokens_spec.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b64812bca11084c10439cfe6377381921d8d6b8
|
4
|
+
data.tar.gz: 0b004f998bb7d52e3deaf239e9379f8bf422502f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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
|
data/lib/devise/doorkeeper.rb
CHANGED
@@ -3,7 +3,14 @@ require 'devise/strategies/doorkeeper'
|
|
3
3
|
|
4
4
|
module Devise
|
5
5
|
module Doorkeeper
|
6
|
-
def self.
|
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
|
@@ -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!(
|
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.
|
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
|
-
|
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
|
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-
|
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
|