Skip to content

Commit cbf2a96

Browse files
appleboylunny
authored andcommitted
refactor: Add new deleteOrg func. (#633)
1 parent 0af9a24 commit cbf2a96

File tree

1 file changed

+50
-9
lines changed

1 file changed

+50
-9
lines changed

models/org.go

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os"
1111
"strings"
1212

13+
"github.com/Unknwon/com"
1314
"github.com/go-xorm/builder"
1415
"github.com/go-xorm/xorm"
1516
)
@@ -224,23 +225,63 @@ func DeleteOrganization(org *User) (err error) {
224225
return err
225226
}
226227

227-
if err = deleteBeans(sess,
228-
&Team{OrgID: org.ID},
229-
&OrgUser{OrgID: org.ID},
230-
&TeamUser{OrgID: org.ID},
228+
if err = deleteOrg(sess, org); err != nil {
229+
if IsErrUserOwnRepos(err) {
230+
return err
231+
} else if err != nil {
232+
return fmt.Errorf("deleteOrg: %v", err)
233+
}
234+
}
235+
236+
if err = sess.Commit(); err != nil {
237+
return err
238+
}
239+
240+
return nil
241+
}
242+
243+
func deleteOrg(e *xorm.Session, u *User) error {
244+
if !u.IsOrganization() {
245+
return fmt.Errorf("You can't delete none organization user: %s", u.Name)
246+
}
247+
248+
// Check ownership of repository.
249+
count, err := getRepositoryCount(e, u)
250+
if err != nil {
251+
return fmt.Errorf("GetRepositoryCount: %v", err)
252+
} else if count > 0 {
253+
return ErrUserOwnRepos{UID: u.ID}
254+
}
255+
256+
if err := deleteBeans(e,
257+
&Team{OrgID: u.ID},
258+
&OrgUser{OrgID: u.ID},
259+
&TeamUser{OrgID: u.ID},
231260
); err != nil {
232261
return fmt.Errorf("deleteBeans: %v", err)
233262
}
234263

235-
if err = deleteUser(sess, org); err != nil {
236-
return fmt.Errorf("deleteUser: %v", err)
264+
if _, err = e.Id(u.ID).Delete(new(User)); err != nil {
265+
return fmt.Errorf("Delete: %v", err)
237266
}
238267

239-
if err = sess.Commit(); err != nil {
240-
return err
268+
// FIXME: system notice
269+
// Note: There are something just cannot be roll back,
270+
// so just keep error logs of those operations.
271+
path := UserPath(u.Name)
272+
273+
if err := os.RemoveAll(path); err != nil {
274+
return fmt.Errorf("Fail to RemoveAll %s: %v", path, err)
275+
}
276+
277+
avatarPath := u.CustomAvatarPath()
278+
if com.IsExist(avatarPath) {
279+
if err := os.Remove(avatarPath); err != nil {
280+
return fmt.Errorf("Fail to remove %s: %v", avatarPath, err)
281+
}
241282
}
242283

243-
return RewriteAllPublicKeys()
284+
return nil
244285
}
245286

246287
// ________ ____ ___

0 commit comments

Comments
 (0)