From 77ce08976d74103e16ffd96df7d012abf7f69dc4 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Fri, 26 Feb 2021 10:08:09 +0100 Subject: [PATCH] Re-enable transfer repo back from org to user account (#14807) * re-enable transfer repo back from org to user account * add test case --- integrations/api_repo_test.go | 1 + services/repository/transfer.go | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/integrations/api_repo_test.go b/integrations/api_repo_test.go index 7cabd51ad..8798fe091 100644 --- a/integrations/api_repo_test.go +++ b/integrations/api_repo_test.go @@ -450,6 +450,7 @@ func TestAPIRepoTransfer(t *testing.T) { {ctxUserID: 1, newOwner: "user2", teams: &[]int64{2}, expectedStatus: http.StatusUnprocessableEntity}, {ctxUserID: 1, newOwner: "user3", teams: &[]int64{5}, expectedStatus: http.StatusForbidden}, {ctxUserID: 1, newOwner: "user3", teams: &[]int64{2}, expectedStatus: http.StatusAccepted}, + {ctxUserID: 2, newOwner: "user2", teams: nil, expectedStatus: http.StatusAccepted}, } defer prepareTestEnv(t)() diff --git a/services/repository/transfer.go b/services/repository/transfer.go index a80f8635b..05f7a56b0 100644 --- a/services/repository/transfer.go +++ b/services/repository/transfer.go @@ -80,8 +80,8 @@ func StartRepositoryTransfer(doer, newOwner *models.User, repo *models.Repositor return fmt.Errorf("repository is not ready for transfer") } - // Admin is always allowed to transfer - if doer.IsAdmin { + // Admin is always allowed to transfer || user transfer repo back to his account + if doer.IsAdmin || doer.ID == newOwner.ID { return TransferOwnership(doer, newOwner, repo, teams) }