diff options
author | Eric Eastwood <contact@ericeastwood.com> | 2017-09-28 16:59:49 -0500 |
---|---|---|
committer | Eric Eastwood <contact@ericeastwood.com> | 2017-09-28 16:59:49 -0500 |
commit | 3468ca835d6b5f410ffeba3bbe3964371ef8349f (patch) | |
tree | 2d5c7dcf052696ec96ef77a65db6616368d9a405 /lib/api/api_guard.rb | |
parent | c8596aa9152169c761faaa69f7d85ee5edb829f2 (diff) | |
parent | 3d899a7d2ecc6a815a4c6d0885ff3d24dba74f3c (diff) | |
download | gitlab-ce-3468ca835d6b5f410ffeba3bbe3964371ef8349f.tar.gz |
Merge branch 'master' into ff_port_from_ee
Conflicts:
app/models/project.rb
db/schema.rb
Diffstat (limited to 'lib/api/api_guard.rb')
-rw-r--r-- | lib/api/api_guard.rb | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/api/api_guard.rb b/lib/api/api_guard.rb index c4c0fdda665..e79f988f549 100644 --- a/lib/api/api_guard.rb +++ b/lib/api/api_guard.rb @@ -75,7 +75,7 @@ module API raise RevokedError when AccessTokenValidationService::VALID - @current_user = User.find(access_token.resource_owner_id) + User.find(access_token.resource_owner_id) end end @@ -84,11 +84,13 @@ module API return nil unless token_string.present? - find_user_by_authentication_token(token_string) || find_user_by_personal_access_token(token_string, scopes) - end + user = + find_user_by_authentication_token(token_string) || + find_user_by_personal_access_token(token_string, scopes) + + raise UnauthorizedError unless user - def current_user - @current_user + user end private @@ -107,7 +109,16 @@ module API end def find_access_token - @access_token ||= Doorkeeper.authenticate(doorkeeper_request, Doorkeeper.configuration.access_token_methods) + return @access_token if defined?(@access_token) + + token = Doorkeeper::OAuth::Token.from_request(doorkeeper_request, *Doorkeeper.configuration.access_token_methods) + return @access_token = nil unless token + + @access_token = Doorkeeper::AccessToken.by_token(token) + raise UnauthorizedError unless @access_token + + @access_token.revoke_previous_refresh_token! + @access_token end def doorkeeper_request @@ -169,6 +180,7 @@ module API TokenNotFoundError = Class.new(StandardError) ExpiredError = Class.new(StandardError) RevokedError = Class.new(StandardError) + UnauthorizedError = Class.new(StandardError) class InsufficientScopeError < StandardError attr_reader :scopes |