Bladeren bron

resolve merge conflicts

abhishek9686 11 maanden geleden
bovenliggende
commit
928bbbfc42
3 gewijzigde bestanden met toevoegingen van 36 en 18 verwijderingen
  1. 17 0
      controllers/tags.go
  2. 1 18
      logic/acls.go
  3. 18 0
      logic/tags.go

+ 17 - 0
controllers/tags.go

@@ -90,6 +90,17 @@ func createTag(w http.ResponseWriter, r *http.Request) {
 		CreatedBy: user.UserName,
 		CreatedAt: time.Now(),
 	}
+	_, err = logic.GetTag(tag.ID)
+	if err == nil {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("tag with id %s exists already", tag.TagName), "badrequest"))
+		return
+	}
+	// validate name
+	err = logic.CheckIDSyntax(tag.TagName)
+	if err != nil {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
+		return
+	}
 	err = logic.InsertTag(tag)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
@@ -136,6 +147,12 @@ func updateTag(w http.ResponseWriter, r *http.Request) {
 	updateTag.NewName = strings.TrimSpace(updateTag.NewName)
 	var newID models.TagID
 	if updateTag.NewName != "" {
+		// validate name
+		err = logic.CheckIDSyntax(updateTag.NewName)
+		if err != nil {
+			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
+			return
+		}
 		newID = models.TagID(fmt.Sprintf("%s.%s", tag.Network, updateTag.NewName))
 		tag.ID = newID
 		tag.TagName = updateTag.NewName

+ 1 - 18
logic/acls.go

@@ -5,7 +5,6 @@ import (
 	"errors"
 	"fmt"
 	"sort"
-	"strings"
 	"time"
 
 	"github.com/gravitl/netmaker/database"
@@ -74,22 +73,6 @@ 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
@@ -97,7 +80,7 @@ func ValidateCreateAclReq(req models.Acl) error {
 	if err != nil {
 		return errors.New("failed to get network details for " + req.NetworkID.String())
 	}
-	err = checkIDSyntax(req.Name)
+	err = CheckIDSyntax(req.Name)
 	if err != nil {
 		return err
 	}

+ 18 - 0
logic/tags.go

@@ -2,8 +2,10 @@ package logic
 
 import (
 	"encoding/json"
+	"errors"
 	"fmt"
 	"sort"
+	"strings"
 	"sync"
 
 	"github.com/gravitl/netmaker/database"
@@ -184,3 +186,19 @@ func SortTagEntrys(tags []models.TagListResp) {
 		return tags[i].ID < tags[j].ID
 	})
 }
+
+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("dots not allowed")
+	}
+	return nil
+}