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/controllers/projects/settings')
-rw-r--r--app/controllers/projects/settings/integration_hook_logs_controller.rb10
-rw-r--r--app/controllers/projects/settings/integrations_controller.rb13
-rw-r--r--app/controllers/projects/settings/merge_requests_controller.rb67
-rw-r--r--app/controllers/projects/settings/repository_controller.rb5
4 files changed, 86 insertions, 9 deletions
diff --git a/app/controllers/projects/settings/integration_hook_logs_controller.rb b/app/controllers/projects/settings/integration_hook_logs_controller.rb
index 1e42fbce4c4..3a921ecad0d 100644
--- a/app/controllers/projects/settings/integration_hook_logs_controller.rb
+++ b/app/controllers/projects/settings/integration_hook_logs_controller.rb
@@ -7,13 +7,13 @@ module Projects
before_action :integration, only: [:show, :retry]
- def retry
- execute_hook
- redirect_to edit_project_settings_integration_path(@project, @integration)
- end
-
private
+ override :after_retry_redirect_path
+ def after_retry_redirect_path
+ edit_project_settings_integration_path(@project, @integration)
+ end
+
def integration
@integration ||= @project.find_or_initialize_integration(params[:integration_id])
end
diff --git a/app/controllers/projects/settings/integrations_controller.rb b/app/controllers/projects/settings/integrations_controller.rb
index 03ef434456f..2bbcd9fe20c 100644
--- a/app/controllers/projects/settings/integrations_controller.rb
+++ b/app/controllers/projects/settings/integrations_controller.rb
@@ -11,7 +11,7 @@ module Projects
before_action :integration, only: [:edit, :update, :test]
before_action :default_integration, only: [:edit, :update]
before_action :web_hook_logs, only: [:edit, :update]
- before_action -> { check_rate_limit!(:project_testing_integration, scope: [@project, current_user]) }, only: :test
+ before_action -> { check_test_rate_limit! }, only: :test
respond_to :html
@@ -124,7 +124,7 @@ module Projects
def web_hook_logs
return unless integration.try(:service_hook).present?
- @web_hook_logs ||= integration.service_hook.web_hook_logs.recent.page(params[:page])
+ @web_hook_logs ||= integration.service_hook.web_hook_logs.recent.page(params[:page]).without_count
end
def ensure_integration_enabled
@@ -140,6 +140,15 @@ module Projects
def use_inherited_settings?(attributes)
default_integration && attributes[:inherit_from_id] == default_integration.id.to_s
end
+
+ def check_test_rate_limit!
+ check_rate_limit!(:project_testing_integration, scope: [@project, current_user]) do
+ render json: {
+ error: true,
+ message: _('This endpoint has been requested too many times. Try again later.')
+ }, status: :ok
+ end
+ end
end
end
end
diff --git a/app/controllers/projects/settings/merge_requests_controller.rb b/app/controllers/projects/settings/merge_requests_controller.rb
new file mode 100644
index 00000000000..93e10695767
--- /dev/null
+++ b/app/controllers/projects/settings/merge_requests_controller.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+module Projects
+ module Settings
+ class MergeRequestsController < Projects::ApplicationController
+ layout 'project_settings'
+
+ before_action :merge_requests_enabled?
+ before_action :present_project, only: [:edit]
+ before_action :authorize_admin_project!
+
+ feature_category :code_review
+
+ def update
+ result = ::Projects::UpdateService.new(@project, current_user, project_params).execute
+
+ if result[:status] == :success
+ flash[:notice] = format(_("Project '%{project_name}' was successfully updated."), project_name: @project.name)
+ redirect_to project_settings_merge_requests_path(@project)
+ else
+ # Refresh the repo in case anything changed
+ @repository = @project.repository.reset
+
+ flash[:alert] = result[:message]
+ @project.reset
+ render 'show'
+ end
+ end
+
+ private
+
+ def merge_requests_enabled?
+ render_404 unless @project.merge_requests_enabled?
+ end
+
+ def project_params
+ params.require(:project)
+ .permit(project_params_attributes)
+ end
+
+ def project_setting_attributes
+ %i[
+ squash_option
+ allow_editing_commit_messages
+ mr_default_target_self
+ ]
+ end
+
+ def project_params_attributes
+ [
+ :allow_merge_on_skipped_pipeline,
+ :resolve_outdated_diff_discussions,
+ :only_allow_merge_if_all_discussions_are_resolved,
+ :only_allow_merge_if_pipeline_succeeds,
+ :printing_merge_request_link_enabled,
+ :remove_source_branch_after_merge,
+ :merge_method,
+ :merge_commit_template_or_default,
+ :squash_commit_template_or_default,
+ :suggestion_commit_message
+ ] + [project_setting_attributes: project_setting_attributes]
+ end
+ end
+ end
+end
+
+Projects::Settings::MergeRequestsController.prepend_mod_with('Projects::Settings::MergeRequestsController')
diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb
index a178b8f7aa3..43c6451577a 100644
--- a/app/controllers/projects/settings/repository_controller.rb
+++ b/app/controllers/projects/settings/repository_controller.rb
@@ -34,13 +34,13 @@ module Projects
def create_deploy_token
result = Projects::DeployTokens::CreateService.new(@project, current_user, deploy_token_params).execute
- @new_deploy_token = result[:deploy_token]
if result[:status] == :success
+ @created_deploy_token = result[:deploy_token]
respond_to do |format|
format.json do
# IMPORTANT: It's a security risk to expose the token value more than just once here!
- json = API::Entities::DeployTokenWithToken.represent(@new_deploy_token).as_json
+ json = API::Entities::DeployTokenWithToken.represent(@created_deploy_token).as_json
render json: json, status: result[:http_status]
end
format.html do
@@ -49,6 +49,7 @@ module Projects
end
end
else
+ @new_deploy_token = result[:deploy_token]
respond_to do |format|
format.json { render json: { message: result[:message] }, status: result[:http_status] }
format.html do