devise-doorkeeper 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|