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:
Diffstat (limited to 'app/services/protected_branches')
-rw-r--r--app/services/protected_branches/base_service.rb67
-rw-r--r--app/services/protected_branches/create_service.rb20
-rw-r--r--app/services/protected_branches/update_service.rb19
3 files changed, 17 insertions, 89 deletions
diff --git a/app/services/protected_branches/base_service.rb b/app/services/protected_branches/base_service.rb
deleted file mode 100644
index bdd175e8552..00000000000
--- a/app/services/protected_branches/base_service.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-module ProtectedBranches
- class BaseService < ::BaseService
- def initialize(project, current_user, params = {})
- super(project, current_user, params)
- @allowed_to_push = params[:allowed_to_push]
- @allowed_to_merge = params[:allowed_to_merge]
- end
-
- def set_access_levels!
- translate_api_params!
- set_merge_access_levels!
- set_push_access_levels!
- end
-
- private
-
- def set_merge_access_levels!
- case @allowed_to_merge
- when 'masters'
- @protected_branch.merge_access_level.masters!
- when 'developers'
- @protected_branch.merge_access_level.developers!
- end
- end
-
- def set_push_access_levels!
- case @allowed_to_push
- when 'masters'
- @protected_branch.push_access_level.masters!
- when 'developers'
- @protected_branch.push_access_level.developers!
- when 'no_one'
- @protected_branch.push_access_level.no_one!
- end
- end
-
- # The `branches` API still uses `developers_can_push` and `developers_can_merge`,
- # which need to be translated to `allowed_to_push` and `allowed_to_merge`,
- # respectively.
- def translate_api_params!
- @allowed_to_push ||=
- case to_boolean(params[:developers_can_push])
- when true
- 'developers'
- when false
- 'masters'
- end
-
- @allowed_to_merge ||=
- case to_boolean(params[:developers_can_merge])
- when true
- 'developers'
- when false
- 'masters'
- end
- end
-
- protected
-
- def to_boolean(value)
- return true if value =~ /^(true|t|yes|y|1|on)$/i
- return false if value =~ /^(false|f|no|n|0|off)$/i
-
- nil
- end
- end
-end
diff --git a/app/services/protected_branches/create_service.rb b/app/services/protected_branches/create_service.rb
index 36019906416..50f79f491ce 100644
--- a/app/services/protected_branches/create_service.rb
+++ b/app/services/protected_branches/create_service.rb
@@ -1,23 +1,27 @@
module ProtectedBranches
- class CreateService < ProtectedBranches::BaseService
+ class CreateService < BaseService
attr_reader :protected_branch
def execute
raise Gitlab::Access::AccessDeniedError unless current_user.can?(:admin_project, project)
+ protected_branch = project.protected_branches.new(params)
+
ProtectedBranch.transaction do
- @protected_branch = project.protected_branches.new(name: params[:name])
- @protected_branch.save!
+ protected_branch.save!
- @protected_branch.create_push_access_level!
- @protected_branch.create_merge_access_level!
+ if protected_branch.push_access_level.blank?
+ protected_branch.create_push_access_level!(access_level: Gitlab::Access::MASTER)
+ end
- set_access_levels!
+ if protected_branch.merge_access_level.blank?
+ protected_branch.create_merge_access_level!(access_level: Gitlab::Access::MASTER)
+ end
end
- true
+ protected_branch
rescue ActiveRecord::RecordInvalid
- false
+ protected_branch
end
end
end
diff --git a/app/services/protected_branches/update_service.rb b/app/services/protected_branches/update_service.rb
index 58f2f774bae..da4c96b3e5f 100644
--- a/app/services/protected_branches/update_service.rb
+++ b/app/services/protected_branches/update_service.rb
@@ -1,22 +1,13 @@
module ProtectedBranches
- class UpdateService < ProtectedBranches::BaseService
+ class UpdateService < BaseService
attr_reader :protected_branch
- def initialize(project, current_user, id, params = {})
- super(project, current_user, params)
- @protected_branch = ProtectedBranch.find(id)
- end
-
- def execute
+ def execute(protected_branch)
raise Gitlab::Access::AccessDeniedError unless current_user.can?(:admin_project, project)
- ProtectedBranch.transaction do
- set_access_levels!
- end
-
- true
- rescue ActiveRecord::RecordInvalid
- false
+ @protected_branch = protected_branch
+ @protected_branch.update(params)
+ @protected_branch
end
end
end