From 9f38fced2c844c541ddba7df78cfb64612a415da Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Thu, 8 Sep 2022 17:56:14 +0800 Subject: [PATCH] fix(region): check qga set password username is equal login_account Signed-off-by: wanyaoqi --- pkg/compute/tasks/guest_qga_reset_password_task.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/compute/tasks/guest_qga_reset_password_task.go b/pkg/compute/tasks/guest_qga_reset_password_task.go index 40ed5456fd..579cf5fbe6 100644 --- a/pkg/compute/tasks/guest_qga_reset_password_task.go +++ b/pkg/compute/tasks/guest_qga_reset_password_task.go @@ -18,6 +18,7 @@ import ( "context" "yunion.io/x/jsonutils" + "yunion.io/x/pkg/util/timeutils" "yunion.io/x/pkg/utils" api "yunion.io/x/onecloud/pkg/apis/compute" @@ -89,11 +90,13 @@ func (self *GuestQgaSetPasswordTask) OnQgaSetUserPassword(ctx context.Context, g input := &api.ServerQgaSetPasswordInput{} self.GetParams().Unmarshal(input) - info := make(map[string]interface{}) - secret, _ := utils.EncryptAESBase64(guest.Id, input.Password) - info["login_account"] = input.Username - info["login_key"] = secret - guest.SetAllMetadata(ctx, info, self.UserCred) + if guest.GetMetadata(ctx, "login_account", self.UserCred) == input.Username { + info := make(map[string]interface{}) + secret, _ := utils.EncryptAESBase64(guest.Id, input.Password) + info["login_key"] = secret + info["login_key_timestamp"] = timeutils.UtcNow() + guest.SetAllMetadata(ctx, info, self.UserCred) + } logclient.AddActionLogWithContext(ctx, guest, logclient.ACT_SET_USER_PASSWORD, "", self.UserCred, true) self.SetStageComplete(ctx, nil)