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(account.Peers, peerKey)
delete(s.PeerKeyId2AccountId, 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) err = s.persist(s.storeFile)
if err != nil { if err != nil {
return nil, err return nil, err

View File

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

View File

@ -17,8 +17,10 @@ type UserHandler struct {
} }
type UserResponse struct { type UserResponse struct {
Email string ID string `json:"id"`
Role string Email string `json:"email"`
Name string `json:"name"`
Role string `json:"role"`
} }
func NewUserHandler(accountManager server.AccountManager, authAudience string) *UserHandler { func NewUserHandler(accountManager server.AccountManager, authAudience string) *UserHandler {
@ -59,5 +61,19 @@ func (u *UserHandler) GetUsers(w http.ResponseWriter, r *http.Request) {
return 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 package server
import ( import (
log "github.com/sirupsen/logrus"
"net" "net"
"strings" "strings"
"time" "time"
@ -262,7 +263,11 @@ func (am *DefaultAccountManager) GetNetworkMap(peerKey string) (*NetworkMap, err
for _, g := range groups { for _, g := range groups {
for _, pid := range g.Peers { 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 // exclude original peer
if peer.Key != peerKey { if peer.Key != peerKey {
res = append(res, peer.Copy()) res = append(res, peer.Copy())