Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2018-01-26 17:28:08 +0300
committerTiago Botelho <tiagonbotelho@hotmail.com>2018-02-06 16:35:35 +0300
commitdc229c076cdc0ef6e7f3f74f6e462c22880ff08c (patch)
treeec2c979bf3dcb0af71661a7903afd02b2e6f6114 /lib/gitlab/git_access.rb
parente42a548f1dac02577d0c1731fef508dab68c45a5 (diff)
Abstracts ProjectMoved and ProjectCreated into a BaseProject
Diffstat (limited to 'lib/gitlab/git_access.rb')
-rw-r--r--lib/gitlab/git_access.rb34
1 files changed, 12 insertions, 22 deletions
diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb
index 32a2395a26b..3d07e112e2b 100644
--- a/lib/gitlab/git_access.rb
+++ b/lib/gitlab/git_access.rb
@@ -19,8 +19,7 @@ module Gitlab
upload_pack_disabled_over_http: 'Pulling over HTTP is not allowed.',
receive_pack_disabled_over_http: 'Pushing over HTTP is not allowed.',
read_only: 'The repository is temporarily read-only. Please try again later.',
- cannot_push_to_read_only: "You can't push code to a read-only GitLab instance.",
- namespace_not_found: 'The namespace you were looking for could not be found.'
+ cannot_push_to_read_only: "You can't push code to a read-only GitLab instance."
}.freeze
DOWNLOAD_COMMANDS = %w{ git-upload-pack git-upload-archive }.freeze
@@ -53,7 +52,6 @@ module Gitlab
check_download_access!
when *PUSH_COMMANDS
check_push_access!(cmd, changes)
- check_namespace_accessibility!
end
true
@@ -100,7 +98,7 @@ module Gitlab
end
def check_project_accessibility!(cmd)
- if (project.blank? || !can_read_project?) && !can_create_project_in_namespace?(cmd)
+ unless can_create_project_in_namespace?(cmd) || can_read_project?
raise NotFoundError, ERROR_MESSAGES[:project_not_found]
end
end
@@ -108,12 +106,12 @@ module Gitlab
def check_project_moved!
return if redirected_path.nil?
- project_moved = Checks::ProjectMoved.new(project, user, redirected_path, protocol)
+ project_moved = Checks::ProjectMoved.new(project, user, protocol, redirected_path)
if project_moved.permanent_redirect?
- project_moved.add_redirect_message
+ project_moved.add_message
else
- raise ProjectMovedError, project_moved.redirect_message(rejected: true)
+ raise ProjectMovedError, project_moved.message(rejected: true)
end
end
@@ -144,19 +142,11 @@ module Gitlab
end
def check_repository_existence!(cmd)
- if (project.blank? || !project.repository.exists?) && !can_create_project_in_namespace?(cmd)
+ unless can_create_project_in_namespace?(cmd) || project.repository.exists?
raise UnauthorizedError, ERROR_MESSAGES[:no_repo]
end
end
- def check_namespace_accessibility!
- return unless project.blank?
-
- unless target_namespace
- raise NotFoundError, ERROR_MESSAGES[:namespace_not_found]
- end
- end
-
def check_download_access!
return if deploy_key?
@@ -170,16 +160,16 @@ module Gitlab
end
def check_push_access!(cmd, changes)
- return if project.blank? && can_create_project_in_namespace?(cmd)
+ if Gitlab::Database.read_only?
+ raise UnauthorizedError, push_to_read_only_message
+ end
+
+ return if can_create_project_in_namespace?(cmd)
if project.repository_read_only?
raise UnauthorizedError, ERROR_MESSAGES[:read_only]
end
- if Gitlab::Database.read_only?
- raise UnauthorizedError, push_to_read_only_message
- end
-
if deploy_key
check_deploy_key_push_access!
elsif user
@@ -249,7 +239,7 @@ module Gitlab
end
def can_create_project_in_namespace?(cmd)
- return false unless push?(cmd) && target_namespace
+ return false unless push?(cmd) && target_namespace && project.blank?
user.can?(:create_projects, target_namespace)
end