Skip to content

Commit

Permalink
Fix package rebuild authorization problem
Browse files Browse the repository at this point in the history
Co-authored-by: Daniel Donisa <daniel.donisa@suse.com>
Co-authored-by: Dany Marcoux <dmarcoux@suse.com>
Co-authored-by: Henne Vogelsang <hvogel@opensuse.org>
Co-authored-by: Saray Cabrera Padrón <scabrerapadron@suse.de>
Co-authored-by: Victor Pereira <vpereira@suse.com>
  • Loading branch information
6 people committed Apr 20, 2021
1 parent b38d311 commit 7ffcf17
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 11 deletions.
4 changes: 3 additions & 1 deletion src/api/app/controllers/trigger_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ class TriggerController < ApplicationController
include Trigger::Errors

def rebuild
rebuild_trigger = PackageControllerService::RebuildTrigger.new(package: @pkg, project: @prj, params: params)
rebuild_trigger = PackageControllerService::RebuildTrigger.new(package: @pkg, project: @prj,
repository: params[:repository],
arch: params[:arch])
authorize rebuild_trigger.policy_object, :update?
rebuild_trigger.rebuild?
render_ok
Expand Down
4 changes: 3 additions & 1 deletion src/api/app/controllers/webui/package_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,9 @@ def abort_build
end

def trigger_rebuild
rebuild_trigger = PackageControllerService::RebuildTrigger.new(package: @package, project: @project, params: params)
rebuild_trigger = PackageControllerService::RebuildTrigger.new(package: @package, project: @project,
repository: params[:repository],
arch: params[:arch])
authorize rebuild_trigger.policy_object, :update?

if rebuild_trigger.rebuild?
Expand Down
4 changes: 3 additions & 1 deletion src/api/app/models/package.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1288,7 +1288,9 @@ def fixtures_name
#### WARNING: these operations run in build object, not this package object
def rebuild(params)
begin
Backend::Api::Sources::Package.rebuild(params[:project], params[:package], params)
Backend::Api::Sources::Package.rebuild(params[:project], params[:package],
{ repository: params[:repository],
arch: params[:arch] })
rescue Backend::Error, Timeout::Error, Project::WritePermissionError => e
errors.add(:base, e.message)
return false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ class RebuildTrigger
def initialize(options = {})
@package = options[:package]
@project = options[:project]
@params = options[:params]
@repository = options[:repository]
@arch = options[:arch]
end

def rebuild?
@package.rebuild(@params.slice(*allowed_params).permit!.to_h)
@package.rebuild(package: @package, project: @project, repository: @repository, arch: @arch)
end

# When we're in a linked project, the package's project points to some other
Expand All @@ -26,11 +27,5 @@ def success_message
def error_message
"Error while triggering rebuild for #{@project.name}/#{@package.name}: #{@package.errors.full_messages.to_sentence}."
end

private

def allowed_params
[:project, :package, :repository, :arch]
end
end
end

0 comments on commit 7ffcf17

Please sign in to comment.