diff --git a/object/group.go b/object/group.go index c2e3d904..35f7cdde 100644 --- a/object/group.go +++ b/object/group.go @@ -154,6 +154,15 @@ func AddGroups(groups []*Group) (bool, error) { return affected != 0, nil } +func deleteGroup(group *Group) (bool, error) { + affected, err := ormer.Engine.ID(core.PK{group.Owner, group.Name}).Delete(&Group{}) + if err != nil { + return false, err + } + + return affected != 0, nil +} + func DeleteGroup(group *Group) (bool, error) { _, err := ormer.Engine.Get(group) if err != nil { @@ -172,12 +181,7 @@ func DeleteGroup(group *Group) (bool, error) { return false, errors.New("group has users") } - affected, err := ormer.Engine.ID(core.PK{group.Owner, group.Name}).Delete(&Group{}) - if err != nil { - return false, err - } - - return affected != 0, nil + return deleteGroup(group) } func checkGroupName(name string) error { diff --git a/object/init_data.go b/object/init_data.go index 99ce72b6..7ba6f377 100644 --- a/object/init_data.go +++ b/object/init_data.go @@ -311,7 +311,7 @@ func initDefinedUser(user *User) { panic(err) } if existed != nil { - affected, err := DeleteUser(user) + affected, err := deleteUser(user) if err != nil { panic(err) } @@ -423,7 +423,7 @@ func initDefinedPermission(permission *Permission) { } if existed != nil { - affected, err := DeletePermission(permission) + affected, err := deletePermission(permission) if err != nil { panic(err) } @@ -511,7 +511,7 @@ func initDefinedRole(role *Role) { } if existed != nil { - affected, err := DeleteRole(role) + affected, err := deleteRole(role) if err != nil { panic(err) } @@ -598,7 +598,7 @@ func initDefinedGroup(group *Group) { panic(err) } if existed != nil { - affected, err := DeleteGroup(group) + affected, err := deleteGroup(group) if err != nil { panic(err) } diff --git a/object/permission.go b/object/permission.go index 1201ddf4..a7f60bab 100644 --- a/object/permission.go +++ b/object/permission.go @@ -286,13 +286,22 @@ func AddPermissionsInBatch(permissions []*Permission) (bool, error) { return affected, nil } -func DeletePermission(permission *Permission) (bool, error) { +func deletePermission(permission *Permission) (bool, error) { affected, err := ormer.Engine.ID(core.PK{permission.Owner, permission.Name}).Delete(&Permission{}) if err != nil { return false, err } - if affected != 0 { + return affected != 0, nil +} + +func DeletePermission(permission *Permission) (bool, error) { + affected, err := deletePermission(permission) + if err != nil { + return false, err + } + + if affected { err = removeGroupingPolicies(permission) if err != nil { return false, err @@ -314,7 +323,7 @@ func DeletePermission(permission *Permission) (bool, error) { } } - return affected != 0, nil + return affected, nil } func getPermissionsByUser(userId string) ([]*Permission, error) { diff --git a/object/role.go b/object/role.go index 696e83b3..54b919c0 100644 --- a/object/role.go +++ b/object/role.go @@ -238,6 +238,15 @@ func AddRolesInBatch(roles []*Role) bool { return affected } +func deleteRole(role *Role) (bool, error) { + affected, err := ormer.Engine.ID(core.PK{role.Owner, role.Name}).Delete(&Role{}) + if err != nil { + return false, err + } + + return affected != 0, nil +} + func DeleteRole(role *Role) (bool, error) { roleId := role.GetId() permissions, err := GetPermissionsByRole(roleId) @@ -253,12 +262,7 @@ func DeleteRole(role *Role) (bool, error) { } } - affected, err := ormer.Engine.ID(core.PK{role.Owner, role.Name}).Delete(&Role{}) - if err != nil { - return false, err - } - - return affected != 0, nil + return deleteRole(role) } func (role *Role) GetId() string { diff --git a/object/user.go b/object/user.go index dcd6e584..fbecd650 100644 --- a/object/user.go +++ b/object/user.go @@ -919,6 +919,15 @@ func AddUsersInBatch(users []*User) (bool, error) { return affected, nil } +func deleteUser(user *User) (bool, error) { + affected, err := ormer.Engine.ID(core.PK{user.Owner, user.Name}).Delete(&User{}) + if err != nil { + return false, err + } + + return affected != 0, nil +} + func DeleteUser(user *User) (bool, error) { // Forced offline the user first _, err := DeleteSession(util.GetSessionId(user.Owner, user.Name, CasdoorApplication)) @@ -926,12 +935,7 @@ func DeleteUser(user *User) (bool, error) { return false, err } - affected, err := ormer.Engine.ID(core.PK{user.Owner, user.Name}).Delete(&User{}) - if err != nil { - return false, err - } - - return affected != 0, nil + return deleteUser(user) } func GetUserInfo(user *User, scope string, aud string, host string) (*Userinfo, error) {