mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-02-20 21:26:18 +00:00
Delete repos/secrets on org deletion (#2367)
This commit is contained in:
parent
3e563ef198
commit
56b8ba151a
6 changed files with 33 additions and 16 deletions
|
@ -48,7 +48,26 @@ func (s storage) OrgUpdate(org *model.Org) error {
|
|||
}
|
||||
|
||||
func (s storage) OrgDelete(id int64) error {
|
||||
return wrapDelete(s.engine.ID(id).Delete(new(model.Org)))
|
||||
return s.orgDelete(s.engine.NewSession(), id)
|
||||
}
|
||||
|
||||
func (s storage) orgDelete(sess *xorm.Session, id int64) error {
|
||||
if _, err := sess.Where("secret_org_id = ?", id).Delete(new(model.Secret)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var repos []*model.Repo
|
||||
if err := sess.Where("repo_org_id = ?", id).Find(&repos); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, repo := range repos {
|
||||
if err := s.deleteRepo(sess, repo); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return wrapDelete(sess.ID(id).Delete(new(model.Org)))
|
||||
}
|
||||
|
||||
func (s storage) OrgFindByName(name string) (*model.Org, error) {
|
||||
|
|
|
@ -23,7 +23,7 @@ import (
|
|||
)
|
||||
|
||||
func TestOrgCRUD(t *testing.T) {
|
||||
store, closer := newTestStore(t, new(model.Org), new(model.Repo))
|
||||
store, closer := newTestStore(t, new(model.Org), new(model.Repo), new(model.Secret), new(model.Config), new(model.Perm), new(model.Registry), new(model.Redirection), new(model.Pipeline))
|
||||
defer closer()
|
||||
|
||||
org1 := &model.Org{
|
||||
|
|
|
@ -91,13 +91,11 @@ func (s storage) UpdateRepo(repo *model.Repo) error {
|
|||
}
|
||||
|
||||
func (s storage) DeleteRepo(repo *model.Repo) error {
|
||||
const batchSize = perPage
|
||||
sess := s.engine.NewSession()
|
||||
defer sess.Close()
|
||||
if err := sess.Begin(); err != nil {
|
||||
return err
|
||||
}
|
||||
return s.deleteRepo(s.engine.NewSession(), repo)
|
||||
}
|
||||
|
||||
func (s storage) deleteRepo(sess *xorm.Session, repo *model.Repo) error {
|
||||
const batchSize = perPage
|
||||
if _, err := sess.Where("config_repo_id = ?", repo.ID).Delete(new(model.Config)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -131,11 +129,7 @@ func (s storage) DeleteRepo(repo *model.Repo) error {
|
|||
}
|
||||
}
|
||||
|
||||
if err := wrapDelete(sess.ID(repo.ID).Delete(new(model.Repo))); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return sess.Commit()
|
||||
return wrapDelete(sess.ID(repo.ID).Delete(new(model.Repo)))
|
||||
}
|
||||
|
||||
// RepoList list all repos where permissions for specific user are stored
|
||||
|
|
|
@ -81,6 +81,10 @@ func (s storage) DeleteUser(user *model.User) error {
|
|||
return err
|
||||
}
|
||||
|
||||
if err := s.orgDelete(sess, user.OrgID); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := wrapDelete(sess.ID(user.ID).Delete(new(model.User))); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ import (
|
|||
)
|
||||
|
||||
func TestUsers(t *testing.T) {
|
||||
store, closer := newTestStore(t, new(model.User), new(model.Repo), new(model.Pipeline), new(model.Step), new(model.Perm), new(model.Org))
|
||||
store, closer := newTestStore(t, new(model.User), new(model.Repo), new(model.Pipeline), new(model.Step), new(model.Perm), new(model.Org), new(model.Secret))
|
||||
defer closer()
|
||||
|
||||
g := goblin.Goblin(t)
|
||||
|
|
|
@ -412,7 +412,7 @@
|
|||
"show": "Show users",
|
||||
"add": "Add user",
|
||||
"none": "There are no users yet.",
|
||||
"delete_confirm": "Do you really want to delete this user?",
|
||||
"delete_confirm": "Do you really want to delete this user? This will also delete all repositories owned by this user.",
|
||||
"deleted": "User deleted",
|
||||
"created": "User created",
|
||||
"saved": "User saved",
|
||||
|
@ -430,7 +430,7 @@
|
|||
"org_settings": "Organization settings",
|
||||
"delete_org": "Delete organization",
|
||||
"deleted": "Organization deleted",
|
||||
"delete_confirm": "Do you really want to delete this organization?",
|
||||
"delete_confirm": "Do you really want to delete this organization? This will also delete all repositories owned by this organization.",
|
||||
"view": "View organization"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue