]> source.dussan.org Git - gitea.git/commitdiff
Remove collaborators when removing and transferring repository
authorPeter Smit <peter@smitmail.eu>
Mon, 16 Feb 2015 11:25:55 +0000 (13:25 +0200)
committerPeter Smit <peter@smitmail.eu>
Mon, 16 Feb 2015 11:34:42 +0000 (13:34 +0200)
models/repo.go

index fd00823a23b59f598bb815eb09a4a33ea753fed5..388bcd0e5b024d460bc89793e627033c5e81d64c 100644 (file)
@@ -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.