Browse Source

check id syntax

abhishek9686 11 tháng trước cách đây
mục cha
commit
6f12dde94b
3 tập tin đã thay đổi với 35 bổ sung3 xóa
  1. 3 1
      controllers/tags.go
  2. 21 2
      logic/acls.go
  3. 11 0
      logic/util.go

+ 3 - 1
controllers/tags.go

@@ -149,7 +149,9 @@ func updateTag(w http.ResponseWriter, r *http.Request) {
 	}
 	go func() {
 		logic.UpdateTag(updateTag, newID)
-		logic.UpdateDeviceTag(updateTag.ID, newID, tag.Network)
+		if updateTag.NewName != "" {
+			logic.UpdateDeviceTag(updateTag.ID, newID, tag.Network)
+		}
 		mq.PublishPeerUpdate(false)
 	}()
 	logic.ReturnSuccessResponse(w, r, "updating tags")

+ 21 - 2
logic/acls.go

@@ -5,6 +5,7 @@ import (
 	"errors"
 	"fmt"
 	"sort"
+	"strings"
 	"time"
 
 	"github.com/gravitl/netmaker/database"
@@ -73,6 +74,22 @@ func DeleteDefaultNetworkPolicies(netId models.NetworkID) {
 	}
 }
 
+func checkIDSyntax(id string) error {
+	if id == "" {
+		return errors.New("name is required")
+	}
+	if len(id) < 3 {
+		return errors.New("name should have min 3 characters")
+	}
+	if HasSymbol(id) {
+		return errors.New("symbols are not allowed")
+	}
+	if strings.Contains(id, ".") {
+		return errors.New("dot not allowed")
+	}
+	return nil
+}
+
 // ValidateCreateAclReq - validates create req for acl
 func ValidateCreateAclReq(req models.Acl) error {
 	// check if acl network exists
@@ -80,8 +97,9 @@ func ValidateCreateAclReq(req models.Acl) error {
 	if err != nil {
 		return errors.New("failed to get network details for " + req.NetworkID.String())
 	}
-	if req.Name == "" {
-		return errors.New("name is required")
+	err = checkIDSyntax(req.Name)
+	if err != nil {
+		return err
 	}
 	req.GetID(req.NetworkID, req.Name)
 	_, err = GetAcl(req.ID)
@@ -413,6 +431,7 @@ func UpdateDeviceTag(OldID, newID models.TagID, netID models.NetworkID) {
 	}
 }
 
+// RemoveDeviceTagFromAclPolicies - remove device tag from acl policies
 func RemoveDeviceTagFromAclPolicies(tagID models.TagID, netID models.NetworkID) error {
 	acls := listDevicePolicies(netID)
 	update := false

+ 11 - 0
logic/util.go

@@ -10,6 +10,7 @@ import (
 	"os"
 	"strings"
 	"time"
+	"unicode"
 
 	"github.com/c-robinson/iplib"
 	"github.com/gravitl/netmaker/database"
@@ -148,4 +149,14 @@ func IsSlicesEqual(a, b []string) bool {
 	return true
 }
 
+// HasSymbol - checks if string has symbols
+func HasSymbol(str string) bool {
+	for _, letter := range str {
+		if unicode.IsSymbol(letter) {
+			return true
+		}
+	}
+	return false
+}
+
 // == private ==