Skip to content

Commit 9cf9a54

Browse files
authored
fix undeleted content when deleting user (#5509)
1 parent 2b4f87d commit 9cf9a54

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

models/ssh_key.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ func DeletePublicKey(doer *User, id int64) (err error) {
535535
if err = sess.Commit(); err != nil {
536536
return err
537537
}
538+
sess.Close()
538539

539540
return RewriteAllPublicKeys()
540541
}
@@ -543,6 +544,10 @@ func DeletePublicKey(doer *User, id int64) (err error) {
543544
// Note: x.Iterate does not get latest data after insert/delete, so we have to call this function
544545
// outside any session scope independently.
545546
func RewriteAllPublicKeys() error {
547+
return rewriteAllPublicKeys(x)
548+
}
549+
550+
func rewriteAllPublicKeys(e Engine) error {
546551
//Don't rewrite key if internal server
547552
if setting.SSH.StartBuiltinServer {
548553
return nil
@@ -569,7 +574,7 @@ func RewriteAllPublicKeys() error {
569574
}
570575
}
571576

572-
err = x.Iterate(new(PublicKey), func(idx int, bean interface{}) (err error) {
577+
err = e.Iterate(new(PublicKey), func(idx int, bean interface{}) (err error) {
573578
_, err = t.WriteString((bean.(*PublicKey)).AuthorizedString())
574579
return err
575580
})

models/user.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,25 +1038,26 @@ func deleteUser(e *xorm.Session, u *User) error {
10381038
&EmailAddress{UID: u.ID},
10391039
&UserOpenID{UID: u.ID},
10401040
&Reaction{UserID: u.ID},
1041+
&TeamUser{UID: u.ID},
1042+
&Collaboration{UserID: u.ID},
1043+
&Stopwatch{UserID: u.ID},
10411044
); err != nil {
10421045
return fmt.Errorf("deleteBeans: %v", err)
10431046
}
10441047

10451048
// ***** START: PublicKey *****
1046-
keys := make([]*PublicKey, 0, 10)
1047-
if err = e.Find(&keys, &PublicKey{OwnerID: u.ID}); err != nil {
1048-
return fmt.Errorf("get all public keys: %v", err)
1049-
}
1050-
1051-
keyIDs := make([]int64, len(keys))
1052-
for i := range keys {
1053-
keyIDs[i] = keys[i].ID
1054-
}
1055-
if err = deletePublicKeys(e, keyIDs...); err != nil {
1049+
if _, err = e.Delete(&PublicKey{OwnerID: u.ID}); err != nil {
10561050
return fmt.Errorf("deletePublicKeys: %v", err)
10571051
}
1052+
rewriteAllPublicKeys(e)
10581053
// ***** END: PublicKey *****
10591054

1055+
// ***** START: GPGPublicKey *****
1056+
if _, err = e.Delete(&GPGKey{OwnerID: u.ID}); err != nil {
1057+
return fmt.Errorf("deleteGPGKeys: %v", err)
1058+
}
1059+
// ***** END: GPGPublicKey *****
1060+
10601061
// Clear assignee.
10611062
if err = clearAssigneeByUserID(e, u.ID); err != nil {
10621063
return fmt.Errorf("clear assignee: %v", err)
@@ -1110,6 +1111,7 @@ func DeleteUser(u *User) (err error) {
11101111
if err = sess.Commit(); err != nil {
11111112
return err
11121113
}
1114+
sess.Close()
11131115

11141116
return RewriteAllPublicKeys()
11151117
}

0 commit comments

Comments
 (0)