diff --git a/management/server/peer.go b/management/server/peer.go index 5174984c4..b43060ee1 100644 --- a/management/server/peer.go +++ b/management/server/peer.go @@ -294,6 +294,8 @@ func (am *DefaultAccountManager) AddPeer( var account *Account var err error var sk *SetupKey + // auto-assign groups that are coming with a SetupKey or a User + var groupsToAdd []string if len(upperKey) != 0 { account, err = am.Store.GetAccountBySetupKey(upperKey) if err != nil { @@ -321,6 +323,8 @@ func (am *DefaultAccountManager) AddPeer( ) } + groupsToAdd = sk.AutoGroups + } else if len(userID) != 0 { account, err = am.Store.GetUserAccount(userID) if err != nil { @@ -361,6 +365,14 @@ func (am *DefaultAccountManager) AddPeer( } group.Peers = append(group.Peers, newPeer.Key) + if len(groupsToAdd) > 0 { + for _, s := range groupsToAdd { + if g, ok := account.Groups[s]; ok && g.Name != "All" { + g.Peers = append(g.Peers, newPeer.Key) + } + } + } + account.Peers[newPeer.Key] = newPeer if len(upperKey) != 0 { account.SetupKeys[sk.Key] = sk.IncrementUsage()