From 62599c059e00ebd6b4aef899deb65267a83f24e5 Mon Sep 17 00:00:00 2001 From: bcmmbaga Date: Fri, 17 Jan 2025 11:25:57 +0300 Subject: [PATCH] Fix sonar Signed-off-by: bcmmbaga --- management/server/user.go | 57 +++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/management/server/user.go b/management/server/user.go index 357827630..7a3e04a1d 100644 --- a/management/server/user.go +++ b/management/server/user.go @@ -106,32 +106,7 @@ func (am *DefaultAccountManager) inviteNewUser(ctx context.Context, accountID, u inviterID = createdBy } - // inviterUser is the one who is inviting the new user - inviterUser, err := am.lookupUserInCache(ctx, am.Store, inviterID, accountID) - if err != nil { - return nil, status.Errorf(status.NotFound, "inviter user with ID %s doesn't exist in IdP", inviterID) - } - - // check if the user is already registered with this email => reject - user, err := am.lookupUserInCacheByEmail(ctx, invite.Email, accountID) - if err != nil { - return nil, err - } - - if user != nil { - return nil, status.Errorf(status.UserAlreadyExists, "can't invite a user with an existing NetBird account") - } - - users, err := am.idpManager.GetUserByEmail(ctx, invite.Email) - if err != nil { - return nil, err - } - - if len(users) > 0 { - return nil, status.Errorf(status.UserAlreadyExists, "can't invite a user with an existing NetBird account") - } - - idpUser, err := am.idpManager.CreateUser(ctx, invite.Email, invite.Name, accountID, inviterUser.Email) + idpUser, err := am.createNewIdpUser(ctx, accountID, inviterID, invite) if err != nil { return nil, err } @@ -165,6 +140,36 @@ func (am *DefaultAccountManager) inviteNewUser(ctx context.Context, accountID, u return newUser.ToUserInfo(idpUser, settings) } +// createNewIdpUser validates the invite and creates a new user in the IdP +func (am *DefaultAccountManager) createNewIdpUser(ctx context.Context, accountID string, inviterID string, invite *types.UserInfo) (*idp.UserData, error) { + // inviterUser is the one who is inviting the new user + inviterUser, err := am.lookupUserInCache(ctx, am.Store, inviterID, accountID) + if err != nil { + return nil, status.Errorf(status.NotFound, "inviter user with ID %s doesn't exist in IdP", inviterID) + } + + // check if the user is already registered with this email => reject + user, err := am.lookupUserInCacheByEmail(ctx, invite.Email, accountID) + if err != nil { + return nil, err + } + + if user != nil { + return nil, status.Errorf(status.UserAlreadyExists, "can't invite a user with an existing NetBird account") + } + + users, err := am.idpManager.GetUserByEmail(ctx, invite.Email) + if err != nil { + return nil, err + } + + if len(users) > 0 { + return nil, status.Errorf(status.UserAlreadyExists, "can't invite a user with an existing NetBird account") + } + + return am.idpManager.CreateUser(ctx, invite.Email, invite.Name, accountID, inviterUser.Email) +} + func (am *DefaultAccountManager) GetUserByID(ctx context.Context, id string) (*types.User, error) { return am.Store.GetUserByUserID(ctx, store.LockingStrengthShare, id) }