Merge pull request #800 from gravitl/bugfix_v0.11.0_comms_edit

dissallowed comms network edits
This commit is contained in:
dcarns 2022-02-18 18:28:25 -05:00 committed by GitHub
commit 7e964416fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,6 +3,7 @@ package controller
import (
"encoding/json"
"errors"
"fmt"
"net/http"
"strings"
@ -12,6 +13,7 @@ import (
"github.com/gravitl/netmaker/logic"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/servercfg"
"github.com/gravitl/netmaker/serverctl"
)
// ALL_NETWORK_ACCESS - represents all networks
@ -44,7 +46,7 @@ func getNetworks(w http.ResponseWriter, r *http.Request) {
return
}
allnetworks := []models.Network{}
err := errors.New("Networks Error")
var err error
if networksSlice[0] == ALL_NETWORK_ACCESS {
allnetworks, err = logic.GetNetworks()
if err != nil && !database.IsEmptyRecord(err) {
@ -55,7 +57,9 @@ func getNetworks(w http.ResponseWriter, r *http.Request) {
for _, network := range networksSlice {
netObject, parentErr := logic.GetParentNetwork(network)
if parentErr == nil {
allnetworks = append(allnetworks, netObject)
if netObject.IsComms != "yes" {
allnetworks = append(allnetworks, netObject)
}
}
}
}
@ -76,6 +80,10 @@ func getNetwork(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var params = mux.Vars(r)
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetNetwork(netname)
if err != nil {
returnErrorResponse(w, r, formatError(err, "internal"))
@ -93,6 +101,10 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var params = mux.Vars(r)
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.KeyUpdate(netname)
if err != nil {
returnErrorResponse(w, r, formatError(err, "internal"))
@ -118,6 +130,10 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) {
var params = mux.Vars(r)
var network models.Network
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetParentNetwork(netname)
if err != nil {
returnErrorResponse(w, r, formatError(err, "internal"))
@ -220,8 +236,11 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
var params = mux.Vars(r)
network := params["networkname"]
err := logic.DeleteNetwork(network)
if isCommsEdit(w, r, network) {
return
}
err := logic.DeleteNetwork(network)
if err != nil {
errtype := "badrequest"
if strings.Contains(err.Error(), "Node check failed") {
@ -279,6 +298,9 @@ func createAccessKey(w http.ResponseWriter, r *http.Request) {
var accesskey models.AccessKey
//start here
netname := params["networkname"]
if isCommsEdit(w, r, netname) {
return
}
network, err := logic.GetParentNetwork(netname)
if err != nil {
returnErrorResponse(w, r, formatError(err, "internal"))
@ -331,3 +353,11 @@ func deleteAccessKey(w http.ResponseWriter, r *http.Request) {
logger.Log(1, r.Header.Get("user"), "deleted access key", keyname, "on network,", netname)
w.WriteHeader(http.StatusOK)
}
func isCommsEdit(w http.ResponseWriter, r *http.Request, netname string) bool {
if netname == serverctl.COMMS_NETID {
returnErrorResponse(w, r, formatError(fmt.Errorf("cannot access comms network"), "internal"))
return true
}
return false
}