summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2017-04-03 21:00:51 +0100
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-04-03 21:14:33 +0100
commit3c91841d032f02b0b0d4c532998bbc923247e804 (patch)
tree874423ab53847ef1bcd290284bbfe179e8493a43 /app/controllers
parent9f4b8dba805915bd21d315f159035449f9f4bef0 (diff)
downloadgitlab-ce-3c91841d032f02b0b0d4c532998bbc923247e804.tar.gz
Created ProtectedRefsController to reduce Tags/Branches duplication
Fixes ProtectedBranches#create flash errors bug due to typo in 'flash[:alert] = @protected_branches.errors'
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/projects/protected_branches_controller.rb58
-rw-r--r--app/controllers/projects/protected_refs_controller.rb48
-rw-r--r--app/controllers/projects/protected_tags_controller.rb58
3 files changed, 84 insertions, 80 deletions
diff --git a/app/controllers/projects/protected_branches_controller.rb b/app/controllers/projects/protected_branches_controller.rb
index a8cb07eb67a..a245a60910e 100644
--- a/app/controllers/projects/protected_branches_controller.rb
+++ b/app/controllers/projects/protected_branches_controller.rb
@@ -1,58 +1,36 @@
-class Projects::ProtectedBranchesController < Projects::ApplicationController
- include RepositorySettingsRedirect
- # Authorize
- before_action :require_non_empty_project
- before_action :authorize_admin_project!
- before_action :load_protected_branch, only: [:show, :update, :destroy]
+class Projects::ProtectedBranchesController < Projects::ProtectedRefsController
- layout "project_settings"
+ protected
- def index
- redirect_to_repository_settings(@project)
+ def protected_ref
+ @protected_branch
end
- def create
- @protected_branch = ::ProtectedBranches::CreateService.new(@project, current_user, protected_branch_params).execute
- unless @protected_branch.persisted?
- flash[:alert] = @protected_branches.errors.full_messages.join(', ').html_safe
- end
- redirect_to_repository_settings(@project)
+ def protected_ref=(val)
+ @protected_branch = val
end
- def show
- @matching_branches = @protected_branch.matching(@project.repository.branches)
+ def matching_refs=(val)
+ @matching_branches = val
end
- def update
- @protected_branch = ::ProtectedBranches::UpdateService.new(@project, current_user, protected_branch_params).execute(@protected_branch)
-
- if @protected_branch.valid?
- respond_to do |format|
- format.json { render json: @protected_branch, status: :ok }
- end
- else
- respond_to do |format|
- format.json { render json: @protected_branch.errors, status: :unprocessable_entity }
- end
- end
+ def project_refs
+ @project.repository.branches
end
- def destroy
- @protected_branch.destroy
-
- respond_to do |format|
- format.html { redirect_to_repository_settings(@project) }
- format.js { head :ok }
- end
+ def create_service
+ ::ProtectedBranches::CreateService
end
- private
+ def update_service
+ ::ProtectedBranches::UpdateService
+ end
- def load_protected_branch
- @protected_branch = @project.protected_branches.find(params[:id])
+ def load_protected_ref
+ self.protected_ref = @project.protected_branches.find(params[:id])
end
- def protected_branch_params
+ def protected_ref_params
params.require(:protected_branch).permit(:name,
merge_access_levels_attributes: [:access_level, :id],
push_access_levels_attributes: [:access_level, :id])
diff --git a/app/controllers/projects/protected_refs_controller.rb b/app/controllers/projects/protected_refs_controller.rb
new file mode 100644
index 00000000000..63f005124a9
--- /dev/null
+++ b/app/controllers/projects/protected_refs_controller.rb
@@ -0,0 +1,48 @@
+class Projects::ProtectedRefsController < Projects::ApplicationController
+ include RepositorySettingsRedirect
+ # Authorize
+ before_action :require_non_empty_project
+ before_action :authorize_admin_project!
+ before_action :load_protected_ref, only: [:show, :update, :destroy]
+
+ layout "project_settings"
+
+ def index
+ redirect_to_repository_settings(@project)
+ end
+
+ def create
+ self.protected_ref = create_service.new(@project, current_user, protected_ref_params).execute
+ unless protected_ref.persisted?
+ flash[:alert] = protected_ref.errors.full_messages.join(', ').html_safe
+ end
+ redirect_to_repository_settings(@project)
+ end
+
+ def show
+ self.matching_refs = protected_ref.matching(project_refs)
+ end
+
+ def update
+ self.protected_ref = update_service.new(@project, current_user, protected_ref_params).execute(protected_ref)
+
+ if protected_ref.valid?
+ respond_to do |format|
+ format.json { render json: protected_ref, status: :ok }
+ end
+ else
+ respond_to do |format|
+ format.json { render json: protected_ref.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ def destroy
+ protected_ref.destroy
+
+ respond_to do |format|
+ format.html { redirect_to_repository_settings(@project) }
+ format.js { head :ok }
+ end
+ end
+end
diff --git a/app/controllers/projects/protected_tags_controller.rb b/app/controllers/projects/protected_tags_controller.rb
index 5ab5d1d997b..8f407b42ac8 100644
--- a/app/controllers/projects/protected_tags_controller.rb
+++ b/app/controllers/projects/protected_tags_controller.rb
@@ -1,58 +1,36 @@
-class Projects::ProtectedTagsController < Projects::ApplicationController
- include RepositorySettingsRedirect
- # Authorize
- before_action :require_non_empty_project
- before_action :authorize_admin_project!
- before_action :load_protected_tag, only: [:show, :update, :destroy]
+class Projects::ProtectedTagsController < Projects::ProtectedRefsController
- layout "project_settings"
+ protected
- def index
- redirect_to_repository_settings(@project)
+ def protected_ref
+ @protected_tag
end
- def create
- @protected_tag = ::ProtectedTags::CreateService.new(@project, current_user, protected_tag_params).execute
- unless @protected_tag.persisted?
- flash[:alert] = @protected_tags.errors.full_messages.join(', ').html_safe
- end
- redirect_to_repository_settings(@project)
+ def protected_ref=(val)
+ @protected_tag = val
end
- def show
- @matching_tags = @protected_tag.matching(@project.repository.tags)
+ def matching_refs=(val)
+ @matching_tags = val
end
- def update
- @protected_tag = ::ProtectedTags::UpdateService.new(@project, current_user, protected_tag_params).execute(@protected_tag)
-
- if @protected_tag.valid?
- respond_to do |format|
- format.json { render json: @protected_tag, status: :ok }
- end
- else
- respond_to do |format|
- format.json { render json: @protected_tag.errors, status: :unprocessable_entity }
- end
- end
+ def project_refs
+ @project.repository.tags
end
- def destroy
- @protected_tag.destroy
-
- respond_to do |format|
- format.html { redirect_to_repository_settings(@project) }
- format.js { head :ok }
- end
+ def create_service
+ ::ProtectedTags::CreateService
end
- private
+ def update_service
+ ::ProtectedTags::UpdateService
+ end
- def load_protected_tag
- @protected_tag = @project.protected_tags.find(params[:id])
+ def load_protected_ref
+ self.protected_ref = @project.protected_tags.find(params[:id])
end
- def protected_tag_params
+ def protected_ref_params
params.require(:protected_tag).permit(:name, push_access_levels_attributes: [:access_level, :id])
end
end