doorkeeper 1.1.0 → 1.2.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.
Potentially problematic release.
This version of doorkeeper might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/CHANGELOG.md +14 -2
- data/README.md +93 -42
- data/app/controllers/doorkeeper/application_controller.rb +1 -1
- data/app/controllers/doorkeeper/applications_controller.rb +4 -4
- data/app/controllers/doorkeeper/authorizations_controller.rb +3 -3
- data/app/controllers/doorkeeper/authorized_applications_controller.rb +1 -1
- data/app/controllers/doorkeeper/token_info_controller.rb +3 -3
- data/app/controllers/doorkeeper/tokens_controller.rb +29 -2
- data/app/helpers/doorkeeper/form_errors_helper.rb +2 -2
- data/app/validators/redirect_uri_validator.rb +1 -1
- data/app/views/doorkeeper/applications/_form.html.erb +3 -3
- data/app/views/doorkeeper/applications/edit.html.erb +1 -1
- data/app/views/doorkeeper/applications/new.html.erb +1 -1
- data/app/views/doorkeeper/applications/show.html.erb +1 -1
- data/app/views/doorkeeper/authorizations/new.html.erb +5 -5
- data/doorkeeper.gemspec +1 -1
- data/lib/doorkeeper.rb +31 -31
- data/lib/doorkeeper/config.rb +66 -37
- data/lib/doorkeeper/doorkeeper_for.rb +6 -3
- data/lib/doorkeeper/engine.rb +2 -2
- data/lib/doorkeeper/helpers/controller.rb +9 -9
- data/lib/doorkeeper/helpers/filter.rb +1 -1
- data/lib/doorkeeper/models/access_grant.rb +5 -5
- data/lib/doorkeeper/models/access_token.rb +22 -18
- data/lib/doorkeeper/models/active_record/access_token.rb +8 -8
- data/lib/doorkeeper/models/active_record/application.rb +5 -5
- data/lib/doorkeeper/models/application.rb +8 -9
- data/lib/doorkeeper/models/expirable.rb +1 -1
- data/lib/doorkeeper/models/mongo_mapper/access_grant.rb +2 -2
- data/lib/doorkeeper/models/mongo_mapper/access_token.rb +11 -11
- data/lib/doorkeeper/models/mongo_mapper/application.rb +4 -4
- data/lib/doorkeeper/models/mongoid/version.rb +2 -2
- data/lib/doorkeeper/models/mongoid2/access_grant.rb +7 -7
- data/lib/doorkeeper/models/mongoid2/access_token.rb +14 -14
- data/lib/doorkeeper/models/mongoid2/application.rb +7 -7
- data/lib/doorkeeper/models/mongoid3_4/access_grant.rb +7 -7
- data/lib/doorkeeper/models/mongoid3_4/access_token.rb +13 -13
- data/lib/doorkeeper/models/mongoid3_4/application.rb +6 -6
- data/lib/doorkeeper/models/ownership.rb +5 -5
- data/lib/doorkeeper/oauth/authorization/code.rb +5 -5
- data/lib/doorkeeper/oauth/authorization/token.rb +7 -7
- data/lib/doorkeeper/oauth/authorization_code_request.rb +18 -19
- data/lib/doorkeeper/oauth/client.rb +1 -1
- data/lib/doorkeeper/oauth/client_credentials/creator.rb +4 -4
- data/lib/doorkeeper/oauth/client_credentials/issuer.rb +6 -4
- data/lib/doorkeeper/oauth/client_credentials/validation.rb +2 -2
- data/lib/doorkeeper/oauth/client_credentials_request.rb +11 -15
- data/lib/doorkeeper/oauth/code_request.rb +5 -4
- data/lib/doorkeeper/oauth/code_response.rb +8 -7
- data/lib/doorkeeper/oauth/error.rb +1 -1
- data/lib/doorkeeper/oauth/error_response.rb +5 -5
- data/lib/doorkeeper/oauth/helpers/uri_checker.rb +1 -1
- data/lib/doorkeeper/oauth/invalid_token_response.rb +10 -10
- data/lib/doorkeeper/oauth/password_access_token_request.rb +57 -54
- data/lib/doorkeeper/oauth/pre_authorization.rb +7 -7
- data/lib/doorkeeper/oauth/refresh_token_request.rb +27 -24
- data/lib/doorkeeper/oauth/scopes.rb +3 -3
- data/lib/doorkeeper/oauth/token.rb +27 -1
- data/lib/doorkeeper/oauth/token_request.rb +14 -4
- data/lib/doorkeeper/rails/routes.rb +31 -22
- data/lib/doorkeeper/rails/routes/mapping.rb +11 -12
- data/lib/doorkeeper/request.rb +5 -5
- data/lib/doorkeeper/version.rb +1 -1
- data/lib/generators/doorkeeper/application_owner_generator.rb +1 -1
- data/lib/generators/doorkeeper/install_generator.rb +5 -5
- data/lib/generators/doorkeeper/migration_generator.rb +1 -1
- data/lib/generators/doorkeeper/mongo_mapper/indexes_generator.rb +2 -2
- data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb +2 -2
- data/lib/generators/doorkeeper/templates/initializer.rb +16 -3
- data/lib/generators/doorkeeper/templates/migration.rb +16 -17
- data/lib/generators/doorkeeper/views_generator.rb +1 -1
- data/spec/controllers/applications_controller_spec.rb +7 -7
- data/spec/controllers/authorizations_controller_spec.rb +48 -48
- data/spec/controllers/protected_resources_controller_spec.rb +108 -107
- data/spec/controllers/token_info_controller_spec.rb +11 -11
- data/spec/controllers/tokens_controller_spec.rb +8 -8
- data/spec/dummy/app/controllers/custom_authorizations_controller.rb +2 -2
- data/spec/dummy/app/controllers/full_protected_resources_controller.rb +3 -3
- data/spec/dummy/app/controllers/home_controller.rb +5 -5
- data/spec/dummy/app/controllers/metal_controller.rb +1 -1
- data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +2 -2
- data/spec/dummy/app/models/user.rb +3 -3
- data/spec/dummy/config/application.rb +8 -9
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/config/initializers/doorkeeper.rb +5 -5
- data/spec/dummy/config/initializers/session_store.rb +1 -1
- data/spec/dummy/config/initializers/wrap_parameters.rb +1 -1
- data/spec/dummy/config/routes.rb +27 -27
- data/spec/dummy/db/migrate/20130902165751_create_doorkeeper_tables.rb +16 -17
- data/spec/dummy/db/migrate/20130902175349_add_owner_to_application.rb +3 -3
- data/spec/dummy/db/schema.rb +39 -39
- data/spec/factories/access_grant.rb +3 -3
- data/spec/factories/access_token.rb +1 -1
- data/spec/factories/application.rb +3 -3
- data/spec/generators/application_owner_generator_spec.rb +6 -7
- data/spec/generators/install_generator_spec.rb +9 -9
- data/spec/generators/migration_generator_spec.rb +4 -4
- data/spec/lib/config_spec.rb +136 -44
- data/spec/lib/models/expirable_spec.rb +9 -9
- data/spec/lib/models/revocable_spec.rb +4 -4
- data/spec/lib/oauth/authorization/uri_builder_spec.rb +4 -4
- data/spec/lib/oauth/authorization_code_request_spec.rb +2 -2
- data/spec/lib/oauth/client/credentials_spec.rb +4 -4
- data/spec/lib/oauth/client/methods_spec.rb +10 -10
- data/spec/lib/oauth/client_credentials/issuer_spec.rb +9 -7
- data/spec/lib/oauth/client_credentials/validation_spec.rb +2 -2
- data/spec/lib/oauth/client_credentials_request_spec.rb +6 -6
- data/spec/lib/oauth/client_spec.rb +4 -4
- data/spec/lib/oauth/code_request_spec.rb +10 -9
- data/spec/lib/oauth/error_response_spec.rb +8 -8
- data/spec/lib/oauth/error_spec.rb +1 -1
- data/spec/lib/oauth/helpers/scope_checker_spec.rb +17 -17
- data/spec/lib/oauth/helpers/unique_token_spec.rb +7 -7
- data/spec/lib/oauth/helpers/uri_checker_spec.rb +33 -33
- data/spec/lib/oauth/invalid_token_response_spec.rb +4 -4
- data/spec/lib/oauth/password_access_token_request_spec.rb +13 -13
- data/spec/lib/oauth/pre_authorization_spec.rb +47 -7
- data/spec/lib/oauth/refresh_token_request_spec.rb +11 -21
- data/spec/lib/oauth/scopes_spec.rb +32 -32
- data/spec/lib/oauth/token_request_spec.rb +10 -9
- data/spec/lib/oauth/token_response_spec.rb +13 -15
- data/spec/lib/oauth/token_spec.rb +24 -10
- data/spec/lib/server_spec.rb +24 -2
- data/spec/models/doorkeeper/access_grant_spec.rb +8 -8
- data/spec/models/doorkeeper/access_token_spec.rb +79 -33
- data/spec/models/doorkeeper/application_spec.rb +29 -29
- data/spec/requests/applications/applications_request_spec.rb +15 -15
- data/spec/requests/applications/authorized_applications_spec.rb +7 -7
- data/spec/requests/endpoints/authorization_spec.rb +19 -12
- data/spec/requests/endpoints/token_spec.rb +26 -8
- data/spec/requests/flows/authorization_code_errors_spec.rb +17 -17
- data/spec/requests/flows/authorization_code_spec.rb +28 -28
- data/spec/requests/flows/client_credentials_spec.rb +3 -3
- data/spec/requests/flows/implicit_grant_errors_spec.rb +5 -5
- data/spec/requests/flows/implicit_grant_spec.rb +2 -2
- data/spec/requests/flows/password_spec.rb +32 -32
- data/spec/requests/flows/refresh_token_spec.rb +23 -23
- data/spec/requests/flows/revoke_token_spec.rb +165 -0
- data/spec/requests/flows/skip_authorization_spec.rb +10 -10
- data/spec/requests/protected_resources/metal_spec.rb +1 -1
- data/spec/requests/protected_resources/private_api_spec.rb +5 -5
- data/spec/routing/custom_controller_routes_spec.rb +4 -0
- data/spec/routing/default_routes_spec.rb +5 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/spec_helper_integration.rb +8 -10
- data/spec/support/helpers/access_token_request_helper.rb +3 -3
- data/spec/support/helpers/authorization_request_helper.rb +3 -3
- data/spec/support/helpers/config_helper.rb +1 -1
- data/spec/support/helpers/model_helper.rb +2 -2
- data/spec/support/helpers/request_spec_helper.rb +3 -3
- data/spec/support/helpers/url_helper.rb +25 -21
- data/spec/support/orm/active_record.rb +4 -4
- data/spec/support/orm/mongo_mapper.rb +2 -3
- data/spec/support/orm/mongoid.rb +5 -6
- data/spec/support/shared/controllers_shared_context.rb +15 -15
- data/spec/support/shared/models_shared_examples.rb +13 -13
- data/spec/validators/redirect_uri_validator_spec.rb +9 -9
- metadata +5 -4
@@ -13,16 +13,16 @@ module Doorkeeper
|
|
13
13
|
self.store_in collection: :oauth_access_grants
|
14
14
|
|
15
15
|
if defined?(Moped::BSON)
|
16
|
-
field :resource_owner_id, :
|
16
|
+
field :resource_owner_id, type: Moped::BSON::ObjectId
|
17
17
|
else
|
18
|
-
field :resource_owner_id, :
|
18
|
+
field :resource_owner_id, type: BSON::ObjectId
|
19
19
|
end
|
20
20
|
|
21
|
-
field :application_id, :
|
22
|
-
field :token, :
|
23
|
-
field :expires_in, :
|
24
|
-
field :redirect_uri, :
|
25
|
-
field :revoked_at, :
|
21
|
+
field :application_id, type: Hash
|
22
|
+
field :token, type: String
|
23
|
+
field :expires_in, type: Integer
|
24
|
+
field :redirect_uri, type: String
|
25
|
+
field :revoked_at, type: DateTime
|
26
26
|
|
27
27
|
index({ token: 1 }, { unique: true })
|
28
28
|
end
|
@@ -13,31 +13,31 @@ module Doorkeeper
|
|
13
13
|
self.store_in collection: :oauth_access_tokens
|
14
14
|
|
15
15
|
if defined?(Moped::BSON)
|
16
|
-
field :resource_owner_id, :
|
16
|
+
field :resource_owner_id, type: Moped::BSON::ObjectId
|
17
17
|
else
|
18
|
-
field :resource_owner_id, :
|
18
|
+
field :resource_owner_id, type: BSON::ObjectId
|
19
19
|
end
|
20
20
|
|
21
|
-
field :token, :
|
22
|
-
field :expires_in, :
|
23
|
-
field :revoked_at, :
|
21
|
+
field :token, type: String
|
22
|
+
field :expires_in, type: Integer
|
23
|
+
field :revoked_at, type: DateTime
|
24
24
|
|
25
25
|
index({ token: 1 }, { unique: true })
|
26
26
|
index({ refresh_token: 1 }, { unique: true, sparse: true })
|
27
27
|
|
28
28
|
def self.delete_all_for(application_id, resource_owner)
|
29
|
-
where(:
|
30
|
-
:
|
29
|
+
where(application_id: application_id,
|
30
|
+
resource_owner_id: resource_owner.id).delete_all
|
31
31
|
end
|
32
32
|
private_class_method :delete_all_for
|
33
33
|
|
34
34
|
def self.last_authorized_token_for(application, resource_owner_id)
|
35
|
-
where(:
|
36
|
-
:
|
37
|
-
:
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
where(application_id: application.id,
|
36
|
+
resource_owner_id: resource_owner_id,
|
37
|
+
revoked_at: nil).
|
38
|
+
order_by([:created_at, :desc]).
|
39
|
+
limit(1).
|
40
|
+
first
|
41
41
|
end
|
42
42
|
private_class_method :last_authorized_token_for
|
43
43
|
|
@@ -5,17 +5,17 @@ module Doorkeeper
|
|
5
5
|
|
6
6
|
self.store_in collection: :oauth_applications
|
7
7
|
|
8
|
-
field :name, :
|
9
|
-
field :uid, :
|
10
|
-
field :secret, :
|
11
|
-
field :redirect_uri, :
|
8
|
+
field :name, type: String
|
9
|
+
field :uid, type: String
|
10
|
+
field :secret, type: String
|
11
|
+
field :redirect_uri, type: String
|
12
12
|
|
13
13
|
index({ uid: 1 }, { unique: true })
|
14
14
|
|
15
|
-
has_many :authorized_tokens, :
|
15
|
+
has_many :authorized_tokens, class_name: 'Doorkeeper::AccessToken'
|
16
16
|
|
17
17
|
def self.authorized_for(resource_owner)
|
18
|
-
ids = AccessToken.where(:
|
18
|
+
ids = AccessToken.where(resource_owner_id: resource_owner.id, revoked_at: nil).map(&:application_id)
|
19
19
|
find(ids)
|
20
20
|
end
|
21
21
|
end
|
@@ -3,14 +3,14 @@ module Doorkeeper
|
|
3
3
|
module Ownership
|
4
4
|
def validate_owner?
|
5
5
|
Doorkeeper.configuration.confirm_application_owner?
|
6
|
-
end
|
7
|
-
|
6
|
+
end
|
7
|
+
|
8
8
|
def self.included(base)
|
9
9
|
base.class_eval do
|
10
|
-
belongs_to :owner, :
|
11
|
-
validates :owner, :
|
10
|
+
belongs_to :owner, polymorphic: true
|
11
|
+
validates :owner, presence: true, if: :validate_owner?
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
-
end
|
16
|
+
end
|
@@ -11,11 +11,11 @@ module Doorkeeper
|
|
11
11
|
|
12
12
|
def issue_token
|
13
13
|
@token ||= AccessGrant.create!(
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
14
|
+
application_id: pre_auth.client.id,
|
15
|
+
resource_owner_id: resource_owner.id,
|
16
|
+
expires_in: configuration.authorization_code_expires_in,
|
17
|
+
redirect_uri: pre_auth.redirect_uri,
|
18
|
+
scopes: pre_auth.scopes.to_s
|
19
19
|
)
|
20
20
|
end
|
21
21
|
|
@@ -10,13 +10,13 @@ module Doorkeeper
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def issue_token
|
13
|
-
@token ||= AccessToken.create!(
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
|
13
|
+
@token ||= AccessToken.create!(
|
14
|
+
application_id: pre_auth.client.id,
|
15
|
+
resource_owner_id: resource_owner.id,
|
16
|
+
scopes: pre_auth.scopes.to_s,
|
17
|
+
expires_in: configuration.access_token_expires_in,
|
18
|
+
use_refresh_token: false
|
19
|
+
)
|
20
20
|
end
|
21
21
|
|
22
22
|
def configuration
|
@@ -3,10 +3,10 @@ module Doorkeeper
|
|
3
3
|
class AuthorizationCodeRequest
|
4
4
|
include Doorkeeper::Validations
|
5
5
|
|
6
|
-
validate :attributes, :
|
7
|
-
validate :client, :
|
8
|
-
validate :grant, :
|
9
|
-
validate :redirect_uri, :
|
6
|
+
validate :attributes, error: :invalid_request
|
7
|
+
validate :client, error: :invalid_client
|
8
|
+
validate :grant, error: :invalid_grant
|
9
|
+
validate :redirect_uri, error: :invalid_grant
|
10
10
|
|
11
11
|
attr_accessor :server, :grant, :client, :redirect_uri, :access_token
|
12
12
|
|
@@ -20,28 +20,27 @@ module Doorkeeper
|
|
20
20
|
def authorize
|
21
21
|
validate
|
22
22
|
@response = if valid?
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
grant.revoke
|
24
|
+
issue_token
|
25
|
+
TokenResponse.new access_token
|
26
|
+
else
|
27
|
+
ErrorResponse.from_request self
|
28
|
+
end
|
29
29
|
end
|
30
30
|
|
31
31
|
def valid?
|
32
|
-
|
32
|
+
error.nil?
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
private
|
36
36
|
|
37
37
|
def issue_token
|
38
|
-
@access_token = Doorkeeper::AccessToken.create!(
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
})
|
38
|
+
@access_token = Doorkeeper::AccessToken.create!(
|
39
|
+
application_id: grant.application_id,
|
40
|
+
resource_owner_id: grant.resource_owner_id,
|
41
|
+
scopes: grant.scopes_string,
|
42
|
+
expires_in: server.access_token_expires_in,
|
43
|
+
use_refresh_token: server.refresh_token_enabled?)
|
45
44
|
end
|
46
45
|
|
47
46
|
def validate_attributes
|
@@ -3,10 +3,10 @@ module Doorkeeper
|
|
3
3
|
class ClientCredentialsRequest
|
4
4
|
class Creator
|
5
5
|
def call(client, scopes, attributes = {})
|
6
|
-
Doorkeeper::AccessToken.create(attributes.merge(
|
7
|
-
:
|
8
|
-
:
|
9
|
-
|
6
|
+
Doorkeeper::AccessToken.create(attributes.merge(
|
7
|
+
application_id: client.id,
|
8
|
+
scopes: scopes.to_s
|
9
|
+
))
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -24,10 +24,12 @@ module Doorkeeper
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def create_token(client, scopes, creator)
|
27
|
-
creator.call(
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
creator.call(
|
28
|
+
client,
|
29
|
+
scopes,
|
30
|
+
use_refresh_token: false,
|
31
|
+
expires_in: @server.access_token_expires_in
|
32
|
+
)
|
31
33
|
end
|
32
34
|
end
|
33
35
|
end
|
@@ -9,8 +9,8 @@ module Doorkeeper
|
|
9
9
|
include Doorkeeper::Validations
|
10
10
|
include Doorkeeper::OAuth::Helpers
|
11
11
|
|
12
|
-
validate :client, :
|
13
|
-
validate :scopes, :
|
12
|
+
validate :client, error: :invalid_client
|
13
|
+
validate :scopes, error: :invalid_scope
|
14
14
|
|
15
15
|
def initialize(server, request)
|
16
16
|
@server, @request = server, request
|
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'doorkeeper/oauth/error'
|
2
|
-
require 'doorkeeper/oauth/error_response'
|
3
|
-
require 'doorkeeper/oauth/scopes'
|
4
|
-
require 'doorkeeper/oauth/token_response'
|
5
1
|
require 'doorkeeper/oauth/client_credentials/creator'
|
6
2
|
require 'doorkeeper/oauth/client_credentials/issuer'
|
7
3
|
require 'doorkeeper/oauth/client_credentials/validation'
|
@@ -10,10 +6,10 @@ module Doorkeeper
|
|
10
6
|
module OAuth
|
11
7
|
class ClientCredentialsRequest
|
12
8
|
attr_accessor :issuer, :server, :client, :original_scopes, :scopes
|
13
|
-
attr_reader
|
14
|
-
alias
|
9
|
+
attr_reader :response
|
10
|
+
alias :error_response :response
|
15
11
|
|
16
|
-
delegate :error, :
|
12
|
+
delegate :error, to: :issuer
|
17
13
|
|
18
14
|
def issuer
|
19
15
|
@issuer ||= Issuer.new(server, Validation.new(server, self))
|
@@ -28,19 +24,19 @@ module Doorkeeper
|
|
28
24
|
def authorize
|
29
25
|
status = issuer.create(client, scopes)
|
30
26
|
@response = if status
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
TokenResponse.new(issuer.token)
|
28
|
+
else
|
29
|
+
ErrorResponse.from_request(self)
|
30
|
+
end
|
35
31
|
end
|
36
32
|
|
37
33
|
# TODO: duplicated code in all flows
|
38
34
|
def scopes
|
39
35
|
@scopes ||= if @original_scopes.present?
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
Doorkeeper::OAuth::Scopes.from_string(@original_scopes)
|
37
|
+
else
|
38
|
+
server.default_scopes
|
39
|
+
end
|
44
40
|
end
|
45
41
|
end
|
46
42
|
end
|
@@ -10,18 +10,19 @@ module Doorkeeper
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def authorize
|
13
|
-
|
13
|
+
if pre_auth.authorizable?
|
14
14
|
auth = Authorization::Code.new(pre_auth, resource_owner)
|
15
15
|
auth.issue_token
|
16
|
-
CodeResponse.new pre_auth, auth
|
16
|
+
@response = CodeResponse.new pre_auth, auth
|
17
17
|
else
|
18
|
-
ErrorResponse.from_request pre_auth
|
18
|
+
@response = ErrorResponse.from_request pre_auth
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def deny
|
23
23
|
pre_auth.error = :access_denied
|
24
|
-
ErrorResponse.from_request
|
24
|
+
ErrorResponse.from_request pre_auth,
|
25
|
+
redirect_uri: pre_auth.redirect_uri
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -21,14 +21,15 @@ module Doorkeeper
|
|
21
21
|
"/oauth/authorize/#{auth.token.token}"
|
22
22
|
else
|
23
23
|
if response_on_fragment
|
24
|
-
uri_with_fragment(
|
25
|
-
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
29
|
-
|
24
|
+
uri_with_fragment(
|
25
|
+
pre_auth.redirect_uri,
|
26
|
+
access_token: auth.token.token,
|
27
|
+
token_type: auth.token.token_type,
|
28
|
+
expires_in: auth.token.expires_in,
|
29
|
+
state: pre_auth.state
|
30
|
+
)
|
30
31
|
else
|
31
|
-
uri_with_query pre_auth.redirect_uri, :
|
32
|
+
uri_with_query pre_auth.redirect_uri, code: auth.token.token, state: pre_auth.state
|
32
33
|
end
|
33
34
|
end
|
34
35
|
end
|
@@ -6,10 +6,10 @@ module Doorkeeper
|
|
6
6
|
|
7
7
|
def self.from_request(request, attributes = {})
|
8
8
|
state = request.state if request.respond_to?(:state)
|
9
|
-
new(attributes.merge(:
|
9
|
+
new(attributes.merge(name: request.error, state: state))
|
10
10
|
end
|
11
11
|
|
12
|
-
delegate :name, :description, :state, :
|
12
|
+
delegate :name, :description, :state, to: :@error
|
13
13
|
|
14
14
|
def initialize(attributes = {})
|
15
15
|
@error = Doorkeeper::OAuth::Error.new(*attributes.values_at(:name, :state))
|
@@ -18,7 +18,7 @@ module Doorkeeper
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def body
|
21
|
-
{ :
|
21
|
+
{ error: name, error_description: description, state: state }.reject { |k, v| v.blank? }
|
22
22
|
end
|
23
23
|
|
24
24
|
def status
|
@@ -38,7 +38,7 @@ module Doorkeeper
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def authenticate_info
|
41
|
-
%
|
41
|
+
%(Bearer realm="#{realm}", error="#{name}", error_description="#{description}")
|
42
42
|
end
|
43
43
|
|
44
44
|
def headers
|
@@ -50,7 +50,7 @@ module Doorkeeper
|
|
50
50
|
|
51
51
|
protected
|
52
52
|
|
53
|
-
delegate :realm, :
|
53
|
+
delegate :realm, to: :configuration
|
54
54
|
|
55
55
|
def configuration
|
56
56
|
Doorkeeper.configuration
|
@@ -21,7 +21,7 @@ module Doorkeeper
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.valid_for_authorization?(url, client_url)
|
24
|
-
valid?(url) && client_url.split.any?{|other_url| matches?(url, other_url) }
|
24
|
+
valid?(url) && client_url.split.any? { |other_url| matches?(url, other_url) }
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.as_uri(url)
|
@@ -3,24 +3,24 @@ module Doorkeeper
|
|
3
3
|
class InvalidTokenResponse < ErrorResponse
|
4
4
|
def self.from_access_token(access_token, attributes = {})
|
5
5
|
reason = case
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
when access_token.try(:revoked?)
|
7
|
+
:revoked
|
8
|
+
when access_token.try(:expired?)
|
9
|
+
:expired
|
10
|
+
else
|
11
|
+
:unknown
|
12
|
+
end
|
13
13
|
|
14
|
-
new(attributes.merge(:
|
14
|
+
new(attributes.merge(reason: reason))
|
15
15
|
end
|
16
16
|
|
17
17
|
def initialize(attributes = {})
|
18
|
-
super(attributes.merge(:
|
18
|
+
super(attributes.merge(name: :invalid_token, state: :unauthorized))
|
19
19
|
@reason = attributes[:reason] || :unknown
|
20
20
|
end
|
21
21
|
|
22
22
|
def description
|
23
|
-
@description ||= I18n.translate @reason, :
|
23
|
+
@description ||= I18n.translate @reason, scope: [:doorkeeper, :errors, :messages, :invalid_token]
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|