summaryrefslogtreecommitdiff
path: root/lib/gitlab_access.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-09 10:25:18 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-09 10:25:18 +0000
commit2956630ab17fdaa2f29b98c5b5114809adfe1b37 (patch)
tree436f8840ecdd060f20d282bd7165fa4765c277fa /lib/gitlab_access.rb
parent63efd0927224a7b3a6df7b83d452baab443d3d90 (diff)
parentf64e5d4a075479846f2e18bb34b84eb26d180f57 (diff)
downloadgitlab-shell-2956630ab17fdaa2f29b98c5b5114809adfe1b37.tar.gz
Merge branch 'nice-error-message' into 'master'
Write errors to stderr to get git to abort and show them as such. Addresses private issues https://dev.gitlab.org/gitlab/gitlab-shell/issues/33 and https://dev.gitlab.org/gitlab/gitlabhq/issues/2195. ![Screen_Shot_2015-04-06_at_13.05.43](https://gitlab.com/gitlab-org/gitlab-shell/uploads/56a4b9f4cc983da93afeb2b85252ec7e/Screen_Shot_2015-04-06_at_13.05.43.png) See merge request !8
Diffstat (limited to 'lib/gitlab_access.rb')
-rw-r--r--lib/gitlab_access.rb21
1 files changed, 10 insertions, 11 deletions
diff --git a/lib/gitlab_access.rb b/lib/gitlab_access.rb
index 22343fd..5816969 100644
--- a/lib/gitlab_access.rb
+++ b/lib/gitlab_access.rb
@@ -5,6 +5,8 @@ require_relative 'names_helper'
require 'json'
class GitlabAccess
+ class AccessDeniedError < StandardError; end
+
include NamesHelper
attr_reader :config, :repo_path, :repo_name, :changes
@@ -18,19 +20,16 @@ class GitlabAccess
end
def exec
- begin
- status = api.check_access('git-receive-pack', @repo_name, @actor, @changes)
-
- return true if status.allowed?
+ status = api.check_access('git-receive-pack', @repo_name, @actor, @changes)
- message = status.message
- rescue GitlabNet::ApiUnreachableError
- message = "Failed to authorize your Git request: internal API unreachable"
- end
+ raise AccessDeniedError, status.message unless status.allowed?
- # reset GL_ID env since we stop git push here
- ENV['GL_ID'] = nil
- puts "GitLab: #{message}"
+ true
+ rescue GitlabNet::ApiUnreachableError
+ $stderr.puts "GitLab: Failed to authorize your Git request: internal API unreachable"
+ false
+ rescue AccessDeniedError => ex
+ $stderr.puts "GitLab: #{ex.message}"
false
end