diff --git a/management/server/group.go b/management/server/group.go index 95d0ab306bf..be8d3fb0e2d 100644 --- a/management/server/group.go +++ b/management/server/group.go @@ -115,6 +115,13 @@ func (am *DefaultAccountManager) SaveGroup(accountID, userID string, newGroup *G if err != nil { return err } + + for _, peerID := range newGroup.Peers { + if account.Peers[peerID] == nil { + return status.Errorf(status.InvalidArgument, "peer with ID \"%s\" not found", peerID) + } + } + oldGroup, exists := account.Groups[newGroup.ID] account.Groups[newGroup.ID] = newGroup diff --git a/management/server/http/groups_handler.go b/management/server/http/groups_handler.go index c58916250ce..c06445690db 100644 --- a/management/server/http/groups_handler.go +++ b/management/server/http/groups_handler.go @@ -240,10 +240,9 @@ func (h *GroupsHandler) GetGroup(w http.ResponseWriter, r *http.Request) { func toGroupResponse(account *server.Account, group *server.Group) *api.Group { cache := make(map[string]api.PeerMinimum) gr := api.Group{ - Id: group.ID, - Name: group.Name, - PeersCount: len(group.Peers), - Issued: &group.Issued, + Id: group.ID, + Name: group.Name, + Issued: &group.Issued, } for _, pid := range group.Peers { @@ -261,5 +260,8 @@ func toGroupResponse(account *server.Account, group *server.Group) *api.Group { gr.Peers = append(gr.Peers, peerResp) } } + + gr.PeersCount = len(gr.Peers) + return &gr }