diff options
author | Peter Smit <peter@smitmail.eu> | 2015-02-16 13:25:55 +0200 |
---|---|---|
committer | Peter Smit <peter@smitmail.eu> | 2015-02-16 13:34:42 +0200 |
commit | b6519f78c704bf70b48e63f960ef88d430e07b3b (patch) | |
tree | 30755138407e489d7ce90e78aca376fe554aa799 /models | |
parent | cd6a2b78a752605d808c6392ce78b92d4759fede (diff) | |
download | gitea-b6519f78c704bf70b48e63f960ef88d430e07b3b.tar.gz gitea-b6519f78c704bf70b48e63f960ef88d430e07b3b.zip |
Remove collaborators when removing and transferring repository
Diffstat (limited to 'models')
-rw-r--r-- | models/repo.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/models/repo.go b/models/repo.go index fd00823a23..388bcd0e5b 100644 --- a/models/repo.go +++ b/models/repo.go @@ -670,6 +670,19 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error { return err } + // Remove redundant collaborators + collaborators, err := repo.GetCollaborators() + if err != nil { + return err + } + for _, c := range collaborators { + if c.Id == newUser.Id || newUser.IsOrgMember(c.Id) { + if _, err = sess.Delete(&Collaboration{RepoID: repo.Id, UserID: c.Id}); err != nil { + return err + } + } + } + // Update user repository number. if _, err = sess.Exec("UPDATE `user` SET num_repos = num_repos + 1 WHERE id = ?", newUser.Id); err != nil { return err @@ -778,6 +791,8 @@ func DeleteRepository(uid, repoId int64, userName string) error { return err } else if _, err = sess.Delete(&Release{RepoId: repoId}); err != nil { return err + } else if _, err = sess.Delete(&Collaboration{RepoID: repoId}); err != nil { + return err } // Delete comments. |