summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authordrew cimino <dcimino@gitlab.com>2019-07-22 14:16:15 -0400
committerdrew cimino <dcimino@gitlab.com>2019-08-12 17:39:32 -0400
commit1c7c91806d4b9866f512f50f36c9c74b48cb8229 (patch)
treed1379e0898f0fbba22fb1fe3fd3731aae7970de2 /app/controllers
parent975763607443fad50e192411ad1da06ebb2ff532 (diff)
downloadgitlab-ce-1c7c91806d4b9866f512f50f36c9c74b48cb8229.tar.gz
Permission fix for MergeRequestsController#pipeline_status
- Use set_pipeline_variables to filter for visible pipelines - Mimic response of nonexistent pipeline if not found - Provide set_pipeline_variables as a before_filter for other actions
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/projects/merge_requests_controller.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index f4d381244d9..ee755d68cf1 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -188,7 +188,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
def pipeline_status
render json: PipelineSerializer
.new(project: @project, current_user: @current_user)
- .represent_status(@merge_request.head_pipeline)
+ .represent_status(head_pipeline)
end
def ci_environments_status
@@ -238,6 +238,13 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
private
+ def head_pipeline
+ strong_memoize(:head_pipeline) do
+ pipeline = @merge_request.head_pipeline
+ pipeline if can?(current_user, :read_pipeline, pipeline)
+ end
+ end
+
def ci_environments_status_on_merge_result?
params[:environment_target] == 'merge_commit'
end