mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 04:10:20 +08:00
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:
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user