control/controlclient: treat node sharer as owner for display purposes
This make clients (macOS, Windows, tailscale status) show the node
sharer's profile rather than the node owner (which may be anonymized).
Updates
@@ -785,6 +785,20 @@ func (c *Direct) sendMapRequest(ctx context.Context, maxPolls int, cb func(*Netw
}
addUserProfile(nm.User)
for _, peer := range resp.Peers {
+ // TODO(bradfitz): ideally we'd push down the semantically correct
+ // Nodes with differing User vs Sharer fields, but that means
+ // updating Windows, macOS, and tailscale status to respect all
+ // those fields, but until we have a plan for what the UI should
+ // be later when we treat them differently, it's easier to just
+ // merge it together here. The server will anonymize UserProfile
+ // records of those not in your network and not a sharer, which
+ // will be most of the peer.Users so it'll be rare when a node's
+ // owner-who's-different-from-sharer will have a non-scrubbed
+ // UserProfile: they would've also needed to share a node
+ // themselves. Until we care, merge the data here.
+ if !peer.Sharer.IsZero() {
+ peer.User = peer.Sharer
+ }
addUserProfile(peer.User)
}
if resp.Node.MachineAuthorized {
