Skip to content

Commit

Permalink
Use account creator as inviter as a fallback (netbirdio#1225)
Browse files Browse the repository at this point in the history
When inviting a user using a service user PAT, we need to fall back to a known ID to get the user's email, which is used in the invite message.
  • Loading branch information
mlsmaycon authored Oct 17, 2023
1 parent 1b1d3fb commit 134c280
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions management/server/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,20 @@ func (am *DefaultAccountManager) inviteNewUser(accountID, userID string, invite
return nil, status.Errorf(status.NotFound, "account %s doesn't exist", accountID)
}

// initiator is the one who is inviting the new user
initiatorUser, err := am.lookupUserInCache(userID, account)
initiatorUser, err := account.FindUser(userID)
if err != nil {
return nil, status.Errorf(status.NotFound, "user %s doesn't exist in IdP", userID)
return nil, status.Errorf(status.NotFound, "initiator user with ID %s doesn't exist", userID)
}

inviterID := userID
if initiatorUser.IsServiceUser {
inviterID = account.CreatedBy
}

// inviterUser is the one who is inviting the new user
inviterUser, err := am.lookupUserInCache(inviterID, account)
if err != nil || inviterUser == 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
Expand All @@ -253,7 +263,7 @@ func (am *DefaultAccountManager) inviteNewUser(accountID, userID string, invite
return nil, status.Errorf(status.UserAlreadyExists, "can't invite a user with an existing NetBird account")
}

idpUser, err := am.idpManager.CreateUser(invite.Email, invite.Name, accountID, initiatorUser.Email)
idpUser, err := am.idpManager.CreateUser(invite.Email, invite.Name, accountID, inviterUser.Email)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 134c280

Please sign in to comment.