Merge pull request #37 in YUNIONIO/onecloud from ~TANGBIN/onecloud:bugfix/tb-ldap-delete-fix to release/2.0.0

* commit '534d3d3d7785900c34abc4e6a3f4a0197986e989':
  use httperrors lib
  return fast
  allow delete ldap
This commit is contained in:
张东亮
2018-08-11 21:13:56 +08:00
committed by 屈轩
2 changed files with 19 additions and 9 deletions
+3
View File
@@ -840,6 +840,9 @@ func (dispatcher *DBModelDispatcher) PerformClassAction(ctx context.Context, act
defer lockman.ReleaseClass(ctx, dispatcher.modelManager, ownerProjId)
managerValue := reflect.ValueOf(dispatcher.modelManager)
if action == "check-create-data" {
return dispatcher.modelManager.ValidateCreateData(ctx, userCred, ownerProjId, query, data.(*jsonutils.JSONDict))
}
return objectPerformAction(dispatcher, managerValue, ctx, userCred, action, query, data)
}
+16 -9
View File
@@ -5,6 +5,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/mcclient"
@@ -233,19 +234,25 @@ func (this *DomainManager) DoDomainConfigDelete(s *mcclient.ClientSession, param
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(objId), "domain_id")
result, err := UsersV3.List(s, params)
detail, err := this.GetById(s, domain, nil)
if err != nil {
log.Errorf("user list got error: %v", err)
log.Errorf("got domain detail error: %v", err)
return ret, httperrors.NewResourceNotFoundError("找不到该认证域")
}
if len(result.Data) > 0 {
e := httputils.JSONClientError{
Code: 403,
Class: "",
Details: fmt.Sprintf("域名%s下存在%d名用户,不允许删除.", objId, len(result.Data)),
driver, err := detail.GetString("driver")
if err != nil {
log.Errorf("got driver from domain detail error: %v", err)
return ret, httperrors.NewInternalServerError("服务器错误,获取认证协议失败,不允许删除")
}
if driver != "ldap" {
if result, err := UsersV3.List(s, params); err != nil {
log.Errorf("user list got error: %v", err)
return ret, httperrors.NewInternalServerError("服务器错误,获取认证域用户列表失败,不允许删除")
} else if len(result.Data) > 0 {
return ret, httperrors.NewForbiddenError(fmt.Sprintf("域名%s下存在%d名用户,不允许删除.", objId, len(result.Data)))
}
return ret, &e
}
this.DeleteConfig(s, objId)