summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/api/api_guard.rb15
-rw-r--r--lib/gitlab/auth/request_authenticator.rb2
-rw-r--r--lib/gitlab/auth/user_auth_finders.rb10
-rw-r--r--spec/lib/gitlab/auth/request_authenticator_spec.rb2
4 files changed, 14 insertions, 15 deletions
diff --git a/lib/api/api_guard.rb b/lib/api/api_guard.rb
index e2a1a51b300..0caf2aa25bc 100644
--- a/lib/api/api_guard.rb
+++ b/lib/api/api_guard.rb
@@ -139,13 +139,14 @@ module API
# Exceptions
#
- MissingTokenError = Class.new(StandardError)
- TokenNotFoundError = Class.new(StandardError)
- ExpiredError = Class.new(StandardError)
- RevokedError = Class.new(StandardError)
- UnauthorizedError = Class.new(StandardError)
-
- class InsufficientScopeError < StandardError
+ AuthenticationException = Class.new(StandardError)
+ MissingTokenError = Class.new(AuthenticationException)
+ TokenNotFoundError = Class.new(AuthenticationException)
+ ExpiredError = Class.new(AuthenticationException)
+ RevokedError = Class.new(AuthenticationException)
+ UnauthorizedError = Class.new(AuthenticationException)
+
+ class InsufficientScopeError < AuthenticationException
attr_reader :scopes
def initialize(scopes)
@scopes = scopes.map { |s| s.try(:name) || s }
diff --git a/lib/gitlab/auth/request_authenticator.rb b/lib/gitlab/auth/request_authenticator.rb
index f500609d1a3..8316d0f40d5 100644
--- a/lib/gitlab/auth/request_authenticator.rb
+++ b/lib/gitlab/auth/request_authenticator.rb
@@ -17,7 +17,7 @@ module Gitlab
def find_sessionless_user
find_user_from_access_token || find_user_from_rss_token
- rescue StandardError
+ rescue API::APIGuard::AuthenticationException
nil
end
end
diff --git a/lib/gitlab/auth/user_auth_finders.rb b/lib/gitlab/auth/user_auth_finders.rb
index dc688637107..0b4ea3aaf5f 100644
--- a/lib/gitlab/auth/user_auth_finders.rb
+++ b/lib/gitlab/auth/user_auth_finders.rb
@@ -47,13 +47,11 @@ module Gitlab
@access_token = find_oauth_access_token || find_personal_access_token
end
- def private_token
- current_request.params[PRIVATE_TOKEN_PARAM].presence ||
+ def find_personal_access_token
+ token =
+ current_request.params[PRIVATE_TOKEN_PARAM].presence ||
current_request.env[PRIVATE_TOKEN_HEADER].presence
- end
- def find_personal_access_token
- token = private_token
return unless token
# Expiration, revocation and scopes are verified in `validate_access_token!`
@@ -66,7 +64,7 @@ module Gitlab
# Expiration, revocation and scopes are verified in `validate_access_token!`
oauth_token = OauthAccessToken.by_token(token)
- raise(API::APIGuard::UnauthorizedError) unless oauth_token
+ raise API::APIGuard::UnauthorizedError unless oauth_token
oauth_token.revoke_previous_refresh_token!
oauth_token
diff --git a/spec/lib/gitlab/auth/request_authenticator_spec.rb b/spec/lib/gitlab/auth/request_authenticator_spec.rb
index 2f01c6ef4de..4ddebed119f 100644
--- a/spec/lib/gitlab/auth/request_authenticator_spec.rb
+++ b/spec/lib/gitlab/auth/request_authenticator_spec.rb
@@ -58,7 +58,7 @@ describe Gitlab::Auth::RequestAuthenticator do
expect(subject.find_sessionless_user).to be_blank
end
- it 'rescue StandardError exceptions' do
+ it 'rescue API::APIGuard::AuthenticationException exceptions' do
allow_any_instance_of(described_class).to receive(:find_user_from_access_token).and_raise(API::APIGuard::UnauthorizedError)
expect(subject.find_sessionless_user).to be_blank