fix: fixed failed to update information when name duplicate (#1773)

* fix: fixed failed to update information when name duplicate

* fix: Use GetOwnerAndNameFromId and GetId functions instead of split

* Update organization.go

* Update role.go

---------

Co-authored-by: hsluoyz <hsluoyz@qq.com>
This commit is contained in:
OutOfEastGate
2023-04-22 21:15:06 +08:00
committed by GitHub
parent a6c7b95f97
commit 916a55b633
3 changed files with 28 additions and 38 deletions

View File

@ -16,7 +16,6 @@ package object
import ( import (
"fmt" "fmt"
"strings"
"github.com/casdoor/casdoor/cred" "github.com/casdoor/casdoor/cred"
"github.com/casdoor/casdoor/i18n" "github.com/casdoor/casdoor/i18n"
@ -299,18 +298,16 @@ func organizationChangeTrigger(oldName string, newName string) error {
} }
for i, u := range role.Users { for i, u := range role.Users {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[0] == oldName { if name == oldName {
split[0] = newName role.Users[i] = util.GetId(owner, newName)
role.Users[i] = split[0] + "/" + split[1]
} }
} }
for i, u := range role.Roles { for i, u := range role.Roles {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[0] == oldName { if name == oldName {
split[0] = newName role.Roles[i] = util.GetId(owner, newName)
role.Roles[i] = split[0] + "/" + split[1]
} }
} }
role.Owner = newName role.Owner = newName
@ -326,18 +323,16 @@ func organizationChangeTrigger(oldName string, newName string) error {
} }
for i, u := range permission.Users { for i, u := range permission.Users {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[0] == oldName { if name == oldName {
split[0] = newName permission.Users[i] = util.GetId(owner, newName)
permission.Users[i] = split[0] + "/" + split[1]
} }
} }
for i, u := range permission.Roles { for i, u := range permission.Roles {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[0] == oldName { if name == oldName {
split[0] = newName permission.Roles[i] = util.GetId(owner, newName)
permission.Roles[i] = split[0] + "/" + split[1]
} }
} }
permission.Owner = newName permission.Owner = newName

View File

@ -16,7 +16,6 @@ package object
import ( import (
"fmt" "fmt"
"strings"
"github.com/casdoor/casdoor/util" "github.com/casdoor/casdoor/util"
"github.com/xorm-io/core" "github.com/xorm-io/core"
@ -182,13 +181,12 @@ func roleChangeTrigger(oldName string, newName string) error {
} }
for _, role := range roles { for _, role := range roles {
for j, u := range role.Roles { for j, u := range role.Roles {
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[1] == oldName { if name == oldName {
split[1] = newName role.Roles[j] = util.GetId(owner, newName)
role.Roles[j] = split[0] + "/" + split[1]
} }
} }
_, err = session.Where("name=?", role.Name).Update(role) _, err = session.Where("name=?", role.Name).And("owner=?", role.Owner).Update(role)
if err != nil { if err != nil {
return err return err
} }
@ -202,13 +200,12 @@ func roleChangeTrigger(oldName string, newName string) error {
for _, permission := range permissions { for _, permission := range permissions {
for j, u := range permission.Roles { for j, u := range permission.Roles {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[1] == oldName { if name == oldName {
split[1] = newName permission.Roles[j] = util.GetId(owner, newName)
permission.Roles[j] = split[0] + "/" + split[1]
} }
} }
_, err = session.Where("name=?", permission.Name).Update(permission) _, err = session.Where("name=?", permission.Name).And("owner=?", permission.Owner).Update(permission)
if err != nil { if err != nil {
return err return err
} }

View File

@ -657,13 +657,12 @@ func userChangeTrigger(oldName string, newName string) error {
for _, role := range roles { for _, role := range roles {
for j, u := range role.Users { for j, u := range role.Users {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[1] == oldName { if name == oldName {
split[1] = newName role.Users[j] = util.GetId(owner, newName)
role.Users[j] = split[0] + "/" + split[1]
} }
} }
_, err = session.Where("name=?", role.Name).Update(role) _, err = session.Where("name=?", role.Name).And("owner=?", role.Owner).Update(role)
if err != nil { if err != nil {
return err return err
} }
@ -677,13 +676,12 @@ func userChangeTrigger(oldName string, newName string) error {
for _, permission := range permissions { for _, permission := range permissions {
for j, u := range permission.Users { for j, u := range permission.Users {
// u = organization/username // u = organization/username
split := strings.Split(u, "/") owner, name := util.GetOwnerAndNameFromId(u)
if split[1] == oldName { if name == oldName {
split[1] = newName permission.Users[j] = util.GetId(owner, newName)
permission.Users[j] = split[0] + "/" + split[1]
} }
} }
_, err = session.Where("name=?", permission.Name).Update(permission) _, err = session.Where("name=?", permission.Name).And("owner=?", permission.Owner).Update(permission)
if err != nil { if err != nil {
return err return err
} }