summaryrefslogtreecommitdiff
path: root/lib/gitlab_access.rb
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2018-08-14 00:22:46 +0100
committerNick Thomas <nick@gitlab.com>2018-08-14 00:22:46 +0100
commitc8bf2e7d47c3b8f34cb79847edcd5dd50b8f280e (patch)
treecc22dc6c91f58ccaadd97fdd816159de6ec8a135 /lib/gitlab_access.rb
parent764f6f47fa6a8698ae033532ae49875a87030518 (diff)
downloadgitlab-shell-c8bf2e7d47c3b8f34cb79847edcd5dd50b8f280e.tar.gz
Revert "Merge branch 'ash.mckenzie/srp-refactor' into 'master'"
This reverts commit 3aaf4751e09262c53544a1987f59b1308af9b6c1, reversing changes made to c6577e0d75f51b017f2f332838b97c3ca5b497c0.
Diffstat (limited to 'lib/gitlab_access.rb')
-rw-r--r--lib/gitlab_access.rb36
1 files changed, 16 insertions, 20 deletions
diff --git a/lib/gitlab_access.rb b/lib/gitlab_access.rb
index 6683ee7..e1a5e35 100644
--- a/lib/gitlab_access.rb
+++ b/lib/gitlab_access.rb
@@ -1,28 +1,34 @@
-require 'json'
-
-require_relative 'errors'
-require_relative 'actor'
require_relative 'gitlab_init'
require_relative 'gitlab_net'
+require_relative 'gitlab_access_status'
require_relative 'names_helper'
require_relative 'gitlab_metrics'
require_relative 'object_dirs_helper'
+require 'json'
class GitlabAccess
+ class AccessDeniedError < StandardError; end
+
include NamesHelper
- def initialize(gl_repository, repo_path, gl_id, changes, protocol)
+ attr_reader :config, :gl_repository, :repo_path, :changes, :protocol
+
+ def initialize(gl_repository, repo_path, actor, changes, protocol)
+ @config = GitlabConfig.new
@gl_repository = gl_repository
@repo_path = repo_path.strip
- @gl_id = gl_id
+ @actor = actor
@changes = changes.lines
@protocol = protocol
end
def exec
- GitlabMetrics.measure('check-access:git-receive-pack') do
- api.check_access('git-receive-pack', gl_repository, repo_path, actor, changes, protocol, env: ObjectDirsHelper.all_attributes.to_json)
+ status = GitlabMetrics.measure('check-access:git-receive-pack') do
+ api.check_access('git-receive-pack', @gl_repository, @repo_path, @actor, @changes, @protocol, env: ObjectDirsHelper.all_attributes.to_json)
end
+
+ raise AccessDeniedError, status.message unless status.allowed?
+
true
rescue GitlabNet::ApiUnreachableError
$stderr.puts "GitLab: Failed to authorize your Git request: internal API unreachable"
@@ -32,19 +38,9 @@ class GitlabAccess
false
end
- private
-
- attr_reader :gl_repository, :repo_path, :gl_id, :changes, :protocol
+ protected
def api
- @api ||= GitlabNet.new
- end
-
- def config
- @config ||= GitlabConfig.new
- end
-
- def actor
- @actor ||= Actor.new_from(gl_id, audit_usernames: config.audit_usernames)
+ GitlabNet.new
end
end