diff --git a/hscontrol/mapper/mapper.go b/hscontrol/mapper/mapper.go index 616d470f..d7807784 100644 --- a/hscontrol/mapper/mapper.go +++ b/hscontrol/mapper/mapper.go @@ -77,11 +77,22 @@ func generateUserProfiles( userMap := make(map[uint]*types.UserView) ids := make([]uint, 0, len(userMap)) user := node.Owner() + if !user.Valid() { + log.Error(). + Uint64("node.id", node.ID().Uint64()). + Str("node.name", node.Hostname()). + Msg("node has no valid owner, skipping user profile generation") + + return nil + } userID := user.Model().ID userMap[userID] = &user ids = append(ids, userID) for _, peer := range peers.All() { peerUser := peer.Owner() + if !peerUser.Valid() { + continue + } peerUserID := peerUser.Model().ID userMap[peerUserID] = &peerUser ids = append(ids, peerUserID) diff --git a/hscontrol/state/state.go b/hscontrol/state/state.go index 5badfc38..48d32766 100644 --- a/hscontrol/state/state.go +++ b/hscontrol/state/state.go @@ -1464,6 +1464,7 @@ func (s *State) processReauthTags( node.Tags = []string{} node.UserID = &user.ID + node.User = user } return nil