Browse Source

updated logs, ensured admins could not be edited

0xdcarns 3 years ago
parent
commit
6891b52cee
3 changed files with 15 additions and 6 deletions
  1. 2 2
      controllers/userHttpController.go
  2. 11 3
      logic/auth.go
  3. 2 1
      logic/wireguard.go

+ 2 - 2
controllers/userHttpController.go

@@ -274,12 +274,12 @@ func updateUserNetworks(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	err = logic.UpdateUserNetworks(userchange.Networks, &user)
+	err = logic.UpdateUserNetworks(userchange.Networks, userchange.IsAdmin, &user)
 	if err != nil {
 		returnErrorResponse(w, r, formatError(err, "badrequest"))
 		return
 	}
-	functions.PrintUserLog(username, "networks were updated", 1)
+	functions.PrintUserLog(username, "status was updated", 1)
 	json.NewEncoder(w).Encode(user)
 }
 

+ 11 - 3
logic/auth.go

@@ -3,6 +3,7 @@ package logic
 import (
 	"encoding/json"
 	"errors"
+	"fmt"
 
 	"github.com/go-playground/validator/v10"
 	"github.com/gravitl/netmaker/database"
@@ -153,12 +154,19 @@ func VerifyAuthRequest(authRequest models.UserAuthParams) (string, error) {
 }
 
 // UpdateUserNetworks - updates the networks of a given user
-func UpdateUserNetworks(newNetworks []string, currentUser *models.User) error {
+func UpdateUserNetworks(newNetworks []string, isadmin bool, currentUser *models.User) error {
 	// check if user exists
-	if _, err := GetUser(currentUser.UserName); err != nil {
+	if returnedUser, err := GetUser(currentUser.UserName); err != nil {
 		return err
+	} else if returnedUser.IsAdmin {
+		return fmt.Errorf("can not make changes to an admin user, attempted to change %s", returnedUser.UserName)
+	}
+	if isadmin {
+		currentUser.IsAdmin = true
+		currentUser.Networks = nil
+	} else {
+		currentUser.Networks = newNetworks
 	}
-	currentUser.Networks = newNetworks
 
 	data, err := json.Marshal(currentUser)
 	if err != nil {

+ 2 - 1
logic/wireguard.go

@@ -62,10 +62,11 @@ func setWGConfig(node models.Node, network string, peerupdate bool) error {
 		var iface string
 		iface = node.Interface
 		err = setServerPeers(iface, node.PersistentKeepalive, peers)
+		Log("updated peers on server "+node.Name, 2)
 	} else {
 		err = initWireguard(&node, privkey, peers, hasGateway, gateways)
+		Log("finished setting wg config on server "+node.Name, 3)
 	}
-	Log("finished setting wg config on server "+node.Name, 1)
 	return err
 }