Fix Peer Deletion & HTTP endpoints (#319)

This commit is contained in:
Misha Bragin 2022-05-21 17:27:04 +02:00 committed by GitHub
parent 3ce3ccc39a
commit 3eb230e1a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 5 deletions

View File

@ -181,6 +181,17 @@ func (s *FileStore) DeletePeer(accountId string, peerKey string) (*Peer, error)
delete(account.Peers, peerKey)
delete(s.PeerKeyId2AccountId, peerKey)
// cleanup groups
var peers []string
for _, g := range account.Groups {
for _, p := range g.Peers {
if p != peerKey {
peers = append(peers, p)
}
}
g.Peers = peers
}
err = s.persist(s.storeFile)
if err != nil {
return nil, err

View File

@ -64,7 +64,7 @@ func (h *Rules) GetAllRulesHandler(w http.ResponseWriter, r *http.Request) {
return
}
var rules []*RuleResponse
rules := []*RuleResponse{}
for _, r := range account.Rules {
rules = append(rules, toRuleResponse(account, r))
}

View File

@ -17,8 +17,10 @@ type UserHandler struct {
}
type UserResponse struct {
Email string
Role string
ID string `json:"id"`
Email string `json:"email"`
Name string `json:"name"`
Role string `json:"role"`
}
func NewUserHandler(accountManager server.AccountManager, authAudience string) *UserHandler {
@ -59,5 +61,19 @@ func (u *UserHandler) GetUsers(w http.ResponseWriter, r *http.Request) {
return
}
writeJSONObject(w, data)
users := []*UserResponse{}
for _, r := range data {
users = append(users, toUserResponse(r))
}
writeJSONObject(w, users)
}
func toUserResponse(user *server.UserInfo) *UserResponse {
return &UserResponse{
ID: user.ID,
Name: user.Name,
Email: user.Email,
Role: user.Role,
}
}

View File

@ -1,6 +1,7 @@
package server
import (
log "github.com/sirupsen/logrus"
"net"
"strings"
"time"
@ -262,7 +263,11 @@ func (am *DefaultAccountManager) GetNetworkMap(peerKey string) (*NetworkMap, err
for _, g := range groups {
for _, pid := range g.Peers {
peer := account.Peers[pid]
peer, ok := account.Peers[pid]
if !ok {
log.Warnf("peer %s found in group %s but doesn't belong to account %s", pid, g.ID, account.Id)
continue
}
// exclude original peer
if peer.Key != peerKey {
res = append(res, peer.Copy())