From 03cd5dc63a1171cde0c37bcda766cbce67aab2cb Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Wed, 4 Mar 2020 18:34:46 +0800 Subject: [PATCH] fix: keystone user password history check should skip system account --- pkg/keystone/models/passwords.go | 4 ++-- pkg/keystone/models/users.go | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/keystone/models/passwords.go b/pkg/keystone/models/passwords.go index 848511026a..36751f5c69 100644 --- a/pkg/keystone/models/passwords.go +++ b/pkg/keystone/models/passwords.go @@ -112,12 +112,12 @@ func validatePasswordComplexity(password string) error { return nil } -func (manager *SPasswordManager) validatePassword(localUserId int, password string) error { +func (manager *SPasswordManager) validatePassword(localUserId int, password string, skipHistoryCheck bool) error { err := validatePasswordComplexity(password) if err != nil { return errors.Wrap(err, "validatePasswordComplexity") } - if o.Options.PasswordUniqueHistoryCheck > 0 { + if !skipHistoryCheck && o.Options.PasswordUniqueHistoryCheck > 0 { shaPass := shaPassword(password) histPasses, err := manager.fetchByLocaluserId(localUserId) if err != nil { diff --git a/pkg/keystone/models/users.go b/pkg/keystone/models/users.go index 0641486b70..5d4943cdbb 100644 --- a/pkg/keystone/models/users.go +++ b/pkg/keystone/models/users.go @@ -436,7 +436,11 @@ func (user *SUser) ValidateUpdateData(ctx context.Context, userCred mcclient.Tok if err != nil { return nil, errors.Wrap(err, "UserManager.FetchUserExtended") } - err = PasswordManager.validatePassword(usrExt.LocalId, passwd) + skipHistoryCheck := false + if user.IsSystemAccount.Bool() { + skipHistoryCheck = true + } + err = PasswordManager.validatePassword(usrExt.LocalId, passwd, skipHistoryCheck) if err != nil { return nil, httperrors.NewInputParameterError("invalid password: %s", err) }