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.