Support cred manager for organization.MasterPassword

This commit is contained in:
Yang Luo
2021-12-22 20:56:22 +08:00
parent d6c2d0f3e8
commit b95f107a60
2 changed files with 13 additions and 2 deletions

View File

@ -107,8 +107,10 @@ func CheckPassword(user *User, password string) string {
credManager := cred.GetCredManager(organization.PasswordType) credManager := cred.GetCredManager(organization.PasswordType)
if credManager != nil { if credManager != nil {
if organization.MasterPassword != "" && organization.MasterPassword == password { if organization.MasterPassword != "" {
return "" if credManager.IsPasswordCorrect(password, organization.MasterPassword, "", organization.PasswordSalt) {
return ""
}
} }
if credManager.IsPasswordCorrect(password, user.Password, user.PasswordSalt, organization.PasswordSalt) { if credManager.IsPasswordCorrect(password, user.Password, user.PasswordSalt, organization.PasswordSalt) {

View File

@ -15,6 +15,7 @@
package object package object
import ( import (
"github.com/casbin/casdoor/cred"
"github.com/casbin/casdoor/util" "github.com/casbin/casdoor/util"
"xorm.io/core" "xorm.io/core"
) )
@ -111,6 +112,14 @@ func UpdateOrganization(id string, organization *Organization) bool {
return false 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) affected, err := adapter.Engine.ID(core.PK{owner, name}).AllCols().Update(organization)
if err != nil { if err != nil {
panic(err) panic(err)