diff --git a/src/api/app/controllers/webui/relationships_controller.rb b/src/api/app/controllers/webui/relationships_controller.rb deleted file mode 100644 index 43fcdd185bd..00000000000 --- a/src/api/app/controllers/webui/relationships_controller.rb +++ /dev/null @@ -1,45 +0,0 @@ -class Webui::RelationshipsController < Webui::BaseController - - before_action :load_object - before_action :load_target - before_action :load_role - - def load_object - if login = params[:user] - @object = User.get_by_login(login) - elsif title = params[:group] - @object = Group.get_by_title(title) - else - raise MissingParameterError, "Neither user nor group given" - end - end - - def load_target - if params[:package_id].blank? - @target = Project.get_by_name(params[:project_id]) - else - @target = Package.find_by_project_and_name(params[:project_id], params[:package_id]) - end - end - - def load_role - @role = Role.find_by_title!(params[:role]) if params[:role] - end - - rescue_from 'ActiveRecord::RecordInvalid' do |exception| - render_error status: 400, errorcode: 'change_role_failed', message: exception.record.errors.full_messages.join('\n') - end - - def create - raise MissingParameterError, "No role is given" unless @role - @target.add_role(@object, @role) - render json: { status: 'ok' } - end - - def remove_user - # @role can be nil to remove all roles - @target.remove_role(@object, @role) - render json: { status: 'ok' } - end - -end diff --git a/src/api/config/routes.rb b/src/api/config/routes.rb index 2ab6f73685d..3b45426f3ff 100644 --- a/src/api/config/routes.rb +++ b/src/api/config/routes.rb @@ -337,14 +337,6 @@ get 'infos' get 'status' end - collection do - get 'remotes' - end - resources :relationships, :only => [:create] do - collection do - delete :for_user, action: :remove_user - end - end resources :flags, :only => [:index] resources :packages, :only => [], constraints: { :id => %r{[^\/]*} } do resources :relationships, :only => [:create] do diff --git a/src/api/webui/app/controllers/webui/project_controller.rb b/src/api/webui/app/controllers/webui/project_controller.rb index bdd47c19bbf..a70da32d557 100644 --- a/src/api/webui/app/controllers/webui/project_controller.rb +++ b/src/api/webui/app/controllers/webui/project_controller.rb @@ -796,19 +796,19 @@ def move_path_down redirect_to :action => :repositories, :project => @project end - def change_role_options(params) - ret = Hash.new - ret[:role] = params[:role] if params.has_key? :role - if params.has_key? :userid - return ret.merge( { user: params[:userid] }) + def load_obj + if login = params[:userid] + return User.get_by_login(login) + elsif title = params[:groupid] + return ::Group.get_by_title(title) else - return ret.merge( { group: params[:groupid] }) + raise MissingParameterError, "Neither user nor group given" end end def save_person begin - ApiDetails.create(:project_relationships, @project.name, change_role_options(params)) + @project.api_project.add_role(load_obj, Role.find_by_title!(params[:role])) @project.free_cache rescue ApiDetails::TransportError, ApiDetails::NotFoundError, User::NotFound => e flash[:error] = e.to_s @@ -826,7 +826,7 @@ def save_person def save_group begin - ApiDetails.create :project_relationships, @project.name, change_role_options(params) + @project.api_project.add_role(load_obj, Role.find_by_title!(params[:role])) @project.free_cache rescue ApiDetails::TransportError, ApiDetails::NotFoundError, ::Group::NotFound => e flash[:error] = e.to_s @@ -844,7 +844,7 @@ def save_group def remove_role begin - ApiDetails.destroy :for_user_project_relationships, @project.name, change_role_options(params) + @project.api_project.remove_role(load_obj, Role.find_by_title(params[:role])) @project.free_cache rescue ApiDetails::TransportError, ApiDetails::NotFoundError, User::NotFound, ::Group::NotFound => e flash[:error] = e.summary diff --git a/src/api/webui/app/models/webui/api_details.rb b/src/api/webui/app/models/webui/api_details.rb index ec6dd97fb4e..6081ae0ec0f 100644 --- a/src/api/webui/app/models/webui/api_details.rb +++ b/src/api/webui/app/models/webui/api_details.rb @@ -67,8 +67,6 @@ def self.http_do(verb, route_name, *args) when :projects_remotes then "projects/remotes" when :infos_project then "projects/#{ids.first}/infos" when :status_project then "projects/#{ids.first}/status" - when :project_relationships then "projects/#{ids.first}/relationships" - when :for_user_project_relationships then "projects/#{ids.first}/relationships/for_user" when :package_rdiff then "projects/#{ids.first}/packages/#{ids.last}/rdiff" diff --git a/src/api/webui/app/models/webui_project.rb b/src/api/webui/app/models/webui_project.rb index 177df1e8123..e82d1d2ae7e 100644 --- a/src/api/webui/app/models/webui_project.rb +++ b/src/api/webui/app/models/webui_project.rb @@ -44,6 +44,10 @@ def to_s to_hash["name"] end + def api_project + Project.find_by_name(to_s) + end + def set_remoteurl(url) logger.debug "set remoteurl"