Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use account creator as inviter as a fallback #1225

Merged
merged 1 commit into from
Oct 17, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Use account creator as inviter as a fallback
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 committed Oct 17, 2023
commit e9ccdbfb99357e3599488a42650d4fcf87b68805
18 changes: 14 additions & 4 deletions management/server/user.go
Original file line number Diff line number Diff line change
@@ -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
@@ -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
}