diff --git a/object/application.go b/object/application.go index d3de2d29..870e727b 100644 --- a/object/application.go +++ b/object/application.go @@ -15,6 +15,8 @@ package object import ( + "fmt" + "github.com/casbin/casdoor/util" "xorm.io/core" ) @@ -80,6 +82,16 @@ func GetPaginationApplications(owner string, offset, limit int) []*Application { return applications } +func getApplicationsByOrganizationName(owner string, organization string) []*Application { + applications := []*Application{} + err := adapter.Engine.Desc("created_time").Find(&applications, &Application{Owner: owner, Organization: organization}) + if err != nil { + panic(err) + } + + return applications +} + func getProviderMap(owner string) map[string]*Provider { providers := GetProviders(owner) m := map[string]*Provider{} @@ -249,3 +261,7 @@ func DeleteApplication(application *Application) bool { return affected != 0 } + +func (application *Application) GetId() string { + return fmt.Sprintf("%s/%s", application.Owner, application.Name) +} diff --git a/object/organization.go b/object/organization.go index 687b4075..1119a956 100644 --- a/object/organization.go +++ b/object/organization.go @@ -116,6 +116,14 @@ func UpdateOrganization(id string, organization *Organization) bool { organization.Name = name } + if name != organization.Name { + applications := getApplicationsByOrganizationName("admin", name) + for _, application := range applications { + application.Organization = organization.Name + UpdateApplication(application.GetId(), application) + } + } + if organization.MasterPassword != "" { credManager := cred.GetCredManager(organization.PasswordType) if credManager != nil {