Skip to content

Commit 28ca093

Browse files
Prevent maintainers (not owners) from transfering
1 parent f404215 commit 28ca093

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

app/models/rubygem_transfer.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ def approved_invites
4545

4646
def available_rubygems
4747
return Rubygem.none if created_by.blank?
48-
created_by.rubygems.where(organization_id: nil).order(:name)
48+
created_by.rubygems
49+
.joins(:ownerships)
50+
.where(ownerships: { user: created_by, role: :owner })
51+
.where(organization_id: nil)
52+
.distinct
53+
.order(:name)
4954
end
5055

5156
def selected_rubygems

test/system/rubygem_transfer_test.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,18 @@ def setup
1919
assert_no_link "Transfer"
2020
end
2121

22-
test "maintainers cannot transfer gems" do
22+
test "maintainers see no transferable gems" do
2323
maintainer = create(:user)
2424
create(:ownership, rubygem: @rubygem, user: maintainer, role: :maintainer)
25+
maintainer_org = create(:organization, owners: [maintainer])
2526

2627
sign_in maintainer
28+
visit organization_transfer_rubygems_path
2729

28-
visit rubygem_transfer_organization_path(@rubygem.slug)
30+
select maintainer_org.name, from: "Organization"
31+
click_on "Continue"
2932

30-
assert_text "Page not found"
33+
assert_text "Gems 0" # No gems available to transfer
3134
end
3235

3336
test "transfer a rubygem to an organization" do

0 commit comments

Comments
 (0)