From 209ba5d5490906cc6b8abd37380c200df8e0367c Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Thu, 28 Jan 2021 23:34:52 +0800 Subject: [PATCH] fix(keystone): SSO created user name may be duplicated --- pkg/keystone/models/identity_provider.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/keystone/models/identity_provider.go b/pkg/keystone/models/identity_provider.go index 0b83320b12..aa047326cb 100644 --- a/pkg/keystone/models/identity_provider.go +++ b/pkg/keystone/models/identity_provider.go @@ -1071,11 +1071,15 @@ func (self *SIdentityProvider) SyncOrCreateUser(ctx context.Context, extId strin if err == nil { // update log.Debugf("find user %s", extName) - _, err := db.Update(user, func() error { + newName, err := db.GenerateAlterName(user, extName) + if err != nil { + return nil, errors.Wrapf(err, "db.GenerateAlterName %s", extName) + } + _, err = db.Update(user, func() error { if syncUserInfo != nil { syncUserInfo(user) } - user.Name = extName + user.Name = newName user.DomainId = domainId if user.Deleted { user.MarkUnDelete() @@ -1099,8 +1103,13 @@ func (self *SIdentityProvider) SyncOrCreateUser(ctx context.Context, extId strin } else { user.Enabled = tristate.False } + domainOwnerId := &db.SOwnerId{DomainId: domainId} + newName, err := db.GenerateName(UserManager, domainOwnerId, extName) + if err != nil { + return nil, errors.Wrapf(err, "db.GenerateName %s", extName) + } user.Id = userId - user.Name = extName + user.Name = newName user.DomainId = domainId err = UserManager.TableSpec().Insert(ctx, user) if err != nil {