mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #7843 from ioito/hotfix/qx-clouduser-opti
fix: optimzed clouduser
This commit is contained in:
@@ -259,17 +259,17 @@ func (self *SCloudpolicy) GetCloudgroups() ([]SCloudgroup, error) {
|
||||
func (self *SCloudpolicy) ValidateDeleteCondition(ctx context.Context) error {
|
||||
users, err := self.GetCloudusers()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "GetCloudusers")
|
||||
return httperrors.NewGeneralError(errors.Wrapf(err, "GetCloudusers"))
|
||||
}
|
||||
if len(users) > 0 {
|
||||
return errors.Wrapf(httperrors.ErrNotEmpty, "policy %s has %d users used", self.Name, len(users))
|
||||
return httperrors.NewNotEmptyError("policy %s has %d users used", self.Name, len(users))
|
||||
}
|
||||
groups, err := self.GetCloudgroups()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "GetCloudgroups")
|
||||
return httperrors.NewGeneralError(errors.Wrapf(err, "GetCloudgroups"))
|
||||
}
|
||||
if len(groups) > 0 {
|
||||
return errors.Wrapf(httperrors.ErrNotEmpty, "policy %s has %d groups used", self.Name, len(groups))
|
||||
return httperrors.NewNotEmptyError("policy %s has %d groups used", self.Name, len(groups))
|
||||
}
|
||||
return self.SStatusInfrasResourceBase.ValidateDeleteCondition(ctx)
|
||||
}
|
||||
|
||||
@@ -1429,21 +1429,39 @@ func (self *SClouduser) AllowPerformChangeOwner(ctx context.Context, userCred mc
|
||||
|
||||
// 变更子账号所属本地用户
|
||||
func (self *SClouduser) PerformChangeOwner(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.ClouduserChangeOwnerInput) (jsonutils.JSONObject, error) {
|
||||
user, err := db.UserCacheManager.FetchUserById(ctx, input.UserId)
|
||||
if err != nil {
|
||||
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "Not found user %s", input.UserId))
|
||||
oldUserId := self.OwnerId
|
||||
newUserId := ""
|
||||
if len(input.UserId) > 0 {
|
||||
user, err := db.UserCacheManager.FetchUserById(ctx, input.UserId)
|
||||
if err != nil {
|
||||
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "Not found user %s", input.UserId))
|
||||
}
|
||||
newUserId = user.Id
|
||||
}
|
||||
old := self.OwnerId
|
||||
_, err = db.Update(self, func() error {
|
||||
self.OwnerId = user.GetId()
|
||||
|
||||
_, err := db.Update(self, func() error {
|
||||
self.OwnerId = newUserId
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "db.Update"))
|
||||
}
|
||||
|
||||
account, err := self.GetCloudaccount()
|
||||
if err != nil {
|
||||
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "GetCloudaccount"))
|
||||
}
|
||||
|
||||
factory, err := account.GetProviderFactory()
|
||||
if err != nil {
|
||||
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "GetProviderFactory"))
|
||||
}
|
||||
|
||||
logclient.AddSimpleActionLog(self, logclient.ACT_CHANGE_OWNER, map[string]interface{}{"old": oldUserId, "newUserId": newUserId}, userCred, true)
|
||||
if len(newUserId) == 0 || !factory.IsSupportResetClouduserPassword() {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
logclient.AddSimpleActionLog(self, logclient.ACT_CHANGE_OWNER, map[string]interface{}{"old": old, "new": user}, userCred, true)
|
||||
return nil, self.StartClouduserResetPasswordTask(ctx, userCred, "", "")
|
||||
}
|
||||
|
||||
|
||||
@@ -90,11 +90,11 @@ func (opts *ClouduserPasswordOptions) Params() (jsonutils.JSONObject, error) {
|
||||
|
||||
type ClouduserChangeOwnerOptions struct {
|
||||
ClouduserIdOption
|
||||
USER_ID string `help:"local user id"`
|
||||
UserId string `help:"local user id"`
|
||||
}
|
||||
|
||||
func (opts *ClouduserChangeOwnerOptions) Params() (jsonutils.JSONObject, error) {
|
||||
return jsonutils.Marshal(map[string]string{"user_id": opts.USER_ID}), nil
|
||||
return jsonutils.Marshal(map[string]string{"user_id": opts.UserId}), nil
|
||||
}
|
||||
|
||||
type ClouduserGroupOptions struct {
|
||||
|
||||
Reference in New Issue
Block a user