diff --git a/object/organization.go b/object/organization.go index 8943fdc6..a367336b 100644 --- a/object/organization.go +++ b/object/organization.go @@ -16,7 +16,6 @@ package object import ( "fmt" - "strings" "github.com/casdoor/casdoor/cred" "github.com/casdoor/casdoor/i18n" @@ -299,18 +298,16 @@ func organizationChangeTrigger(oldName string, newName string) error { } for i, u := range role.Users { // u = organization/username - split := strings.Split(u, "/") - if split[0] == oldName { - split[0] = newName - role.Users[i] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + role.Users[i] = util.GetId(owner, newName) } } for i, u := range role.Roles { // u = organization/username - split := strings.Split(u, "/") - if split[0] == oldName { - split[0] = newName - role.Roles[i] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + role.Roles[i] = util.GetId(owner, newName) } } role.Owner = newName @@ -326,18 +323,16 @@ func organizationChangeTrigger(oldName string, newName string) error { } for i, u := range permission.Users { // u = organization/username - split := strings.Split(u, "/") - if split[0] == oldName { - split[0] = newName - permission.Users[i] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + permission.Users[i] = util.GetId(owner, newName) } } for i, u := range permission.Roles { // u = organization/username - split := strings.Split(u, "/") - if split[0] == oldName { - split[0] = newName - permission.Roles[i] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + permission.Roles[i] = util.GetId(owner, newName) } } permission.Owner = newName diff --git a/object/role.go b/object/role.go index 1e477047..39b05ae7 100644 --- a/object/role.go +++ b/object/role.go @@ -16,7 +16,6 @@ package object import ( "fmt" - "strings" "github.com/casdoor/casdoor/util" "github.com/xorm-io/core" @@ -182,13 +181,12 @@ func roleChangeTrigger(oldName string, newName string) error { } for _, role := range roles { for j, u := range role.Roles { - split := strings.Split(u, "/") - if split[1] == oldName { - split[1] = newName - role.Roles[j] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + role.Roles[j] = util.GetId(owner, newName) } } - _, err = session.Where("name=?", role.Name).Update(role) + _, err = session.Where("name=?", role.Name).And("owner=?", role.Owner).Update(role) if err != nil { return err } @@ -202,13 +200,12 @@ func roleChangeTrigger(oldName string, newName string) error { for _, permission := range permissions { for j, u := range permission.Roles { // u = organization/username - split := strings.Split(u, "/") - if split[1] == oldName { - split[1] = newName - permission.Roles[j] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + permission.Roles[j] = util.GetId(owner, newName) } } - _, err = session.Where("name=?", permission.Name).Update(permission) + _, err = session.Where("name=?", permission.Name).And("owner=?", permission.Owner).Update(permission) if err != nil { return err } diff --git a/object/user.go b/object/user.go index e3169514..f63933fb 100644 --- a/object/user.go +++ b/object/user.go @@ -657,13 +657,12 @@ func userChangeTrigger(oldName string, newName string) error { for _, role := range roles { for j, u := range role.Users { // u = organization/username - split := strings.Split(u, "/") - if split[1] == oldName { - split[1] = newName - role.Users[j] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + role.Users[j] = util.GetId(owner, newName) } } - _, err = session.Where("name=?", role.Name).Update(role) + _, err = session.Where("name=?", role.Name).And("owner=?", role.Owner).Update(role) if err != nil { return err } @@ -677,13 +676,12 @@ func userChangeTrigger(oldName string, newName string) error { for _, permission := range permissions { for j, u := range permission.Users { // u = organization/username - split := strings.Split(u, "/") - if split[1] == oldName { - split[1] = newName - permission.Users[j] = split[0] + "/" + split[1] + owner, name := util.GetOwnerAndNameFromId(u) + if name == oldName { + permission.Users[j] = util.GetId(owner, newName) } } - _, err = session.Where("name=?", permission.Name).Update(permission) + _, err = session.Where("name=?", permission.Name).And("owner=?", permission.Owner).Update(permission) if err != nil { return err }