diff --git a/object/check.go b/object/check.go index da0d8094..c7e516c1 100644 --- a/object/check.go +++ b/object/check.go @@ -107,8 +107,10 @@ func CheckPassword(user *User, password string) string { credManager := cred.GetCredManager(organization.PasswordType) if credManager != nil { - if organization.MasterPassword != "" && organization.MasterPassword == password { - return "" + if organization.MasterPassword != "" { + if credManager.IsPasswordCorrect(password, organization.MasterPassword, "", organization.PasswordSalt) { + return "" + } } if credManager.IsPasswordCorrect(password, user.Password, user.PasswordSalt, organization.PasswordSalt) { diff --git a/object/organization.go b/object/organization.go index bb216439..bc5f2966 100644 --- a/object/organization.go +++ b/object/organization.go @@ -15,6 +15,7 @@ package object import ( + "github.com/casbin/casdoor/cred" "github.com/casbin/casdoor/util" "xorm.io/core" ) @@ -111,6 +112,14 @@ func UpdateOrganization(id string, organization *Organization) bool { return false } + if organization.MasterPassword != "" { + credManager := cred.GetCredManager(organization.PasswordType) + if credManager != nil { + hashedPassword := credManager.GetHashedPassword(organization.MasterPassword, "", organization.PasswordSalt) + organization.MasterPassword = hashedPassword + } + } + affected, err := adapter.Engine.ID(core.PK{owner, name}).AllCols().Update(organization) if err != nil { panic(err)