diff options
Diffstat (limited to 'app/services/ci/retry_pipeline_service.rb')
-rw-r--r-- | app/services/ci/retry_pipeline_service.rb | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb index 9ad46ca7585..d40643e1513 100644 --- a/app/services/ci/retry_pipeline_service.rb +++ b/app/services/ci/retry_pipeline_service.rb @@ -5,9 +5,8 @@ module Ci include Gitlab::OptimisticLocking def execute(pipeline) - unless can?(current_user, :update_pipeline, pipeline) - raise Gitlab::Access::AccessDeniedError - end + access_response = check_access(pipeline) + return access_response if access_response.error? pipeline.ensure_scheduling_type! @@ -30,6 +29,18 @@ module Ci Ci::ProcessPipelineService .new(pipeline) .execute + + ServiceResponse.success + rescue Gitlab::Access::AccessDeniedError => e + ServiceResponse.error(message: e.message, http_status: :forbidden) + end + + def check_access(pipeline) + if can?(current_user, :update_pipeline, pipeline) + ServiceResponse.success + else + ServiceResponse.error(message: '403 Forbidden', http_status: :forbidden) + end end private |