From 7caf7332175ec37498effe8443c05bcc778b00e0 Mon Sep 17 00:00:00 2001 From: bcmmbaga Date: Thu, 8 May 2025 15:50:32 +0300 Subject: [PATCH] Skip adding user to domain account if already exists Signed-off-by: bcmmbaga --- management/server/account.go | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/management/server/account.go b/management/server/account.go index 5c474a343..b69cebdeb 100644 --- a/management/server/account.go +++ b/management/server/account.go @@ -1046,21 +1046,29 @@ func (am *DefaultAccountManager) addNewUserToDomainAccount(ctx context.Context, unlockAccount := am.Store.AcquireWriteLockByUID(ctx, domainAccountID) defer unlockAccount() - newUser := types.NewRegularUser(userAuth.UserId) - newUser.AccountID = domainAccountID - err := am.Store.SaveUser(ctx, store.LockingStrengthUpdate, newUser) + user, err := am.Store.GetUserByUserID(ctx, store.LockingStrengthShare, userAuth.UserId) if err != nil { + if sErr, ok := status.FromError(err); ok && sErr.Type() == status.NotFound { + newUser := types.NewRegularUser(userAuth.UserId) + newUser.AccountID = domainAccountID + err = am.Store.SaveUser(ctx, store.LockingStrengthUpdate, newUser) + if err != nil { + return "", err + } + + err = am.addAccountIDToIDPAppMeta(ctx, userAuth.UserId, domainAccountID) + if err != nil { + return "", err + } + + am.StoreEvent(ctx, userAuth.UserId, userAuth.UserId, domainAccountID, activity.UserJoined, nil) + return domainAccountID, nil + } + return "", err } - err = am.addAccountIDToIDPAppMeta(ctx, userAuth.UserId, domainAccountID) - if err != nil { - return "", err - } - - am.StoreEvent(ctx, userAuth.UserId, userAuth.UserId, domainAccountID, activity.UserJoined, nil) - - return domainAccountID, nil + return user.AccountID, nil } // redeemInvite checks whether user has been invited and redeems the invite