portainer/portainer · error · HandlerError
Team membership already registered
Error message
Team membership already registered
What it means
Error "Team membership already registered" thrown in portainer/portainer.
Source
Thrown at api/http/handler/teammemberships/teammembership_create.go:77
securityContext, err := security.RetrieveRestrictedRequestContext(r)
if err != nil {
return httperror.InternalServerError("Unable to retrieve info from request context", err)
}
if !security.AuthorizedTeamManagement(portainer.TeamID(payload.TeamID), securityContext) {
return httperror.Forbidden("Permission denied to manage team memberships", httperrors.ErrResourceAccessDenied)
}
memberships, err := handler.DataStore.TeamMembership().TeamMembershipsByUserID(portainer.UserID(payload.UserID))
if err != nil {
return httperror.InternalServerError("Unable to retrieve team memberships from the database", err)
}
if len(memberships) > 0 {
for _, membership := range memberships {
if membership.UserID == portainer.UserID(payload.UserID) && membership.TeamID == portainer.TeamID(payload.TeamID) {
return httperror.Conflict("Team membership already registered", errors.New("Team membership already exists for this user and team"))
}
}
}
membership := &portainer.TeamMembership{
UserID: portainer.UserID(payload.UserID),
TeamID: portainer.TeamID(payload.TeamID),
Role: portainer.MembershipRole(payload.Role),
}
err = handler.DataStore.TeamMembership().Create(membership)
if err != nil {
return httperror.InternalServerError("Unable to persist team memberships inside the database", err)
}
defer handler.updateUserServiceAccounts(membership)
return response.JSON(w, membership)View on GitHub (pinned to 17e74456ff)
When it happens
Trigger: Thrown at api/http/handler/teammemberships/teammembership_create.go:77 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of portainer/portainer@17e74456ff (2026-08-26).
Data as JSON: /api/errors/696907697ee144be.
Report an issue: GitHub.