Skip to content
Snippets Groups Projects
Commit 93636753 authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Use update build policy instead of new play policy

parent b6facd83
No related branches found
No related tags found
No related merge requests found
module Ci
class BuildPolicy < CommitStatusPolicy
alias_method :build, :subject
def rules
super
 
Loading
Loading
@@ -9,17 +11,17 @@ module Ci
cannot! :"#{rule}_commit_status" unless can? :"#{rule}_build"
end
 
can! :play_build if can_play_action?
if can?(:update_build) && protected_action?
cannot! :update_build
end
end
 
private
 
alias_method :build, :subject
def can_play_action?
def protected_action?
return false unless build.action?
 
::Gitlab::UserAccess
!::Gitlab::UserAccess
.new(user, project: build.project)
.can_push_to_branch?(build.ref)
end
Loading
Loading
Loading
Loading
@@ -12,6 +12,6 @@ class EnvironmentPolicy < BasePolicy
private
 
def can_play_stop_action?
Ability.allowed?(user, :play_build, environment.stop_action)
Ability.allowed?(user, :update_build, environment.stop_action)
end
end
Loading
Loading
@@ -19,6 +19,6 @@ class BuildActionEntity < Grape::Entity
alias_method :build, :object
 
def playable?
build.playable? && can?(request.user, :play_build, build)
build.playable? && can?(request.user, :update_build, build)
end
end
Loading
Loading
@@ -26,7 +26,7 @@ class BuildEntity < Grape::Entity
alias_method :build, :object
 
def playable?
build.playable? && can?(request.user, :play_build, build)
build.playable? && can?(request.user, :update_build, build)
end
 
def detailed_status
Loading
Loading
module Ci
class PlayBuildService < ::BaseService
def execute(build)
unless can?(current_user, :play_build, build)
unless can?(current_user, :update_build, build)
raise Gitlab::Access::AccessDeniedError
end
 
Loading
Loading
Loading
Loading
@@ -102,7 +102,7 @@
= link_to cancel_namespace_project_build_path(job.project.namespace, job.project, job, return_to: request.original_url), method: :post, title: 'Cancel', class: 'btn btn-build' do
= icon('remove', class: 'cred')
- elsif allow_retry
- if job.playable? && !admin && can?(current_user, :play_build, job)
- if job.playable? && !admin && can?(current_user, :update_build, job)
= link_to play_namespace_project_build_path(job.project.namespace, job.project, job, return_to: request.original_url), method: :post, title: 'Play', class: 'btn btn-build' do
= custom_icon('icon_play')
- elsif job.retryable?
Loading
Loading
Loading
Loading
@@ -14,7 +14,7 @@ module Gitlab
end
 
def has_action?
can?(user, :play_build, subject)
can?(user, :update_build, subject)
end
 
def action_icon
Loading
Loading
Loading
Loading
@@ -108,8 +108,8 @@ describe Ci::BuildPolicy, :models do
create(:ci_build, :manual, ref: 'some-ref', pipeline: pipeline)
end
 
it 'does not include ability to play build' do
expect(policies).not_to include :play_build
it 'does not include ability to update build' do
expect(policies).not_to include :update_build
end
end
 
Loading
Loading
@@ -118,8 +118,8 @@ describe Ci::BuildPolicy, :models do
create(:ci_build, ref: 'some-ref', pipeline: pipeline)
end
 
it 'does not include ability to play build' do
expect(policies).not_to include :play_build
it 'includes ability to update build' do
expect(policies).to include :update_build
end
end
end
Loading
Loading
@@ -128,16 +128,16 @@ describe Ci::BuildPolicy, :models do
context 'when build is a manual action' do
let(:build) { create(:ci_build, :manual, pipeline: pipeline) }
 
it 'includes ability to play build' do
expect(policies).to include :play_build
it 'includes ability to update build' do
expect(policies).to include :update_build
end
end
 
context 'when build is not a manual action' do
let(:build) { create(:ci_build, pipeline: pipeline) }
let(:build) { create(:ci_build, pipeline: pipeline) }
 
it 'does not include ability to play build' do
expect(policies).not_to include :play_build
it 'includes ability to update build' do
expect(policies).to include :update_build
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment