Commit 53219857 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Check ability to update build on the API resource

parent 3264e09c
...@@ -132,6 +132,7 @@ module API ...@@ -132,6 +132,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:job_id]) build = get_build!(params[:job_id])
authorize!(:update_build, build)
build.cancel build.cancel
...@@ -148,6 +149,7 @@ module API ...@@ -148,6 +149,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:job_id]) build = get_build!(params[:job_id])
authorize!(:update_build, build)
return forbidden!('Job is not retryable') unless build.retryable? return forbidden!('Job is not retryable') unless build.retryable?
build = Ci::Build.retry(build, current_user) build = Ci::Build.retry(build, current_user)
...@@ -165,6 +167,7 @@ module API ...@@ -165,6 +167,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:job_id]) build = get_build!(params[:job_id])
authorize!(:update_build, build)
return forbidden!('Job is not erasable!') unless build.erasable? return forbidden!('Job is not erasable!') unless build.erasable?
build.erase(erased_by: current_user) build.erase(erased_by: current_user)
...@@ -181,6 +184,7 @@ module API ...@@ -181,6 +184,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:job_id]) build = get_build!(params[:job_id])
authorize!(:update_build, build)
return not_found!(build) unless build.artifacts? return not_found!(build) unless build.artifacts?
build.keep_artifacts! build.keep_artifacts!
...@@ -201,6 +205,7 @@ module API ...@@ -201,6 +205,7 @@ module API
build = get_build!(params[:job_id]) build = get_build!(params[:job_id])
authorize!(:update_build, build)
bad_request!("Unplayable Job") unless build.playable? bad_request!("Unplayable Job") unless build.playable?
build.play(current_user) build.play(current_user)
...@@ -211,12 +216,12 @@ module API ...@@ -211,12 +216,12 @@ module API
end end
helpers do helpers do
def get_build(id) def find_build(id)
user_project.builds.find_by(id: id.to_i) user_project.builds.find_by(id: id.to_i)
end end
def get_build!(id) def get_build!(id)
get_build(id) || not_found! find_build(id) || not_found!
end end
def present_artifacts!(artifacts_file) def present_artifacts!(artifacts_file)
......
...@@ -134,6 +134,7 @@ module API ...@@ -134,6 +134,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:build_id]) build = get_build!(params[:build_id])
authorize!(:update_build, build)
build.cancel build.cancel
...@@ -150,6 +151,7 @@ module API ...@@ -150,6 +151,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:build_id]) build = get_build!(params[:build_id])
authorize!(:update_build, build)
return forbidden!('Build is not retryable') unless build.retryable? return forbidden!('Build is not retryable') unless build.retryable?
build = Ci::Build.retry(build, current_user) build = Ci::Build.retry(build, current_user)
...@@ -167,6 +169,7 @@ module API ...@@ -167,6 +169,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:build_id]) build = get_build!(params[:build_id])
authorize!(:update_build, build)
return forbidden!('Build is not erasable!') unless build.erasable? return forbidden!('Build is not erasable!') unless build.erasable?
build.erase(erased_by: current_user) build.erase(erased_by: current_user)
...@@ -183,6 +186,7 @@ module API ...@@ -183,6 +186,7 @@ module API
authorize_update_builds! authorize_update_builds!
build = get_build!(params[:build_id]) build = get_build!(params[:build_id])
authorize!(:update_build, build)
return not_found!(build) unless build.artifacts? return not_found!(build) unless build.artifacts?
build.keep_artifacts! build.keep_artifacts!
...@@ -202,7 +206,7 @@ module API ...@@ -202,7 +206,7 @@ module API
authorize_read_builds! authorize_read_builds!
build = get_build!(params[:build_id]) build = get_build!(params[:build_id])
authorize!(:update_build, build)
bad_request!("Unplayable Job") unless build.playable? bad_request!("Unplayable Job") unless build.playable?
build.play(current_user) build.play(current_user)
...@@ -213,12 +217,12 @@ module API ...@@ -213,12 +217,12 @@ module API
end end
helpers do helpers do
def get_build(id) def find_build(id)
user_project.builds.find_by(id: id.to_i) user_project.builds.find_by(id: id.to_i)
end end
def get_build!(id) def get_build!(id)
get_build(id) || not_found! find_build(id) || not_found!
end end
def present_artifacts!(artifacts_file) def present_artifacts!(artifacts_file)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment