  def do_project_copy( params )
    # copy entire project in the backend
    begin
      path = "/source/#{URI.escape(self.name)}"
      path << Suse::Backend.build_query_from_hash(params, [:cmd, :user, :comment, :oproject, :withbinaries, :withhistory, :makeolder])
      Suse::Backend.post path, nil
    rescue Suse::Backend::HTTPError => e
      logger.debug "copy failed: #{e.message}"
      # we need to check results of backend in any case (also timeout error eg)
    end

    # set user if nil, needed for delayed job in Package model
    User.current ||= User.find_by_login(params[:user])

    # restore all package meta data objects in DB
    backend_pkgs = Collection.find :package, :match => "@project='#{self.name}'"
    backend_pkgs.each_package do |package|
      path = "/source/#{URI.escape(self.name)}/#{package.name}/_meta"
      p = self.packages.new(name: package.name)
      p.update_from_xml(Xmlhash.parse(Suse::Backend.get(path).body))
      p.save! # do not store
    end
    packages.each { |p| p.sources_changed }
  end
Weaknesses in this category are related to improper assignment or handling of permissions.