mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
fix(keystone): ensure comparing id with non-utf8 string
This commit is contained in:
@@ -32,6 +32,7 @@ import (
|
||||
func init() {
|
||||
type IdentityProviderListOptions struct {
|
||||
options.BaseListOptions
|
||||
SsoDomain string `help:"Filter SSO IDP by domain" json:"sso_domain"`
|
||||
}
|
||||
R(&IdentityProviderListOptions{}, "idp-list", "List all identity provider", func(s *mcclient.ClientSession, args *IdentityProviderListOptions) error {
|
||||
params, err := options.ListStructToParams(args)
|
||||
|
||||
@@ -150,6 +150,9 @@ func (manager *SDomainManager) FetchDomain(domainId string, domainName string) (
|
||||
}
|
||||
|
||||
func (manager *SDomainManager) FetchDomainByIdOrName(domain string) (*SDomain, error) {
|
||||
if stringutils2.IsUtf8(domain) {
|
||||
return manager.FetchDomainByName(domain)
|
||||
}
|
||||
obj, err := db.NewModelObject(manager)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -1063,16 +1063,17 @@ func (rm *SReceiverManager) FetchByIdOrNames(ctx context.Context, idOrNames ...s
|
||||
}
|
||||
var err error
|
||||
q := rm.Query()
|
||||
if len(idOrNames) == 1 {
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.Equals(q.Field("id"), idOrNames[0]),
|
||||
sqlchemy.Equals(q.Field("name"), idOrNames[0]),
|
||||
))
|
||||
} else {
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.In(q.Field("id"), idOrNames),
|
||||
sqlchemy.In(q.Field("name"), idOrNames),
|
||||
))
|
||||
var conds []sqlchemy.ICondition
|
||||
for _, idOrName := range idOrNames {
|
||||
conds = append(conds, sqlchemy.Equals(q.Field("name"), idOrName))
|
||||
if !stringutils2.IsUtf8(idOrName) {
|
||||
conds = append(conds, sqlchemy.Equals(q.Field("id"), idOrName))
|
||||
}
|
||||
}
|
||||
if len(conds) == 1 {
|
||||
q = q.Filter(conds[0])
|
||||
} else if len(conds) > 1 {
|
||||
q = q.Filter(sqlchemy.OR(conds...))
|
||||
}
|
||||
receivers := make([]SReceiver, 0, len(idOrNames))
|
||||
err = db.FetchModelObjects(rm, q, &receivers)
|
||||
|
||||
Reference in New Issue
Block a user