Przeglądaj źródła

add validation checks

abhishek9686 1 rok temu
rodzic
commit
e9e0a9136d
2 zmienionych plików z 42 dodań i 0 usunięć
  1. 11 0
      controllers/user.go
  2. 31 0
      logic/user_mgmt.go

+ 11 - 0
controllers/user.go

@@ -133,6 +133,11 @@ func createUserGroup(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
+	err = logic.ValidateCreateGroupReq(userGroup)
+	if err != nil {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
+		return
+	}
 	err = logic.CreateUserGroup(userGroup)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
@@ -161,6 +166,11 @@ func updateUserGroup(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
+	err = logic.ValidateUpdateGroupReq(userGroup)
+	if err != nil {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
+		return
+	}
 	err = logic.UpdateUserGroup(userGroup)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
@@ -1180,6 +1190,7 @@ func inviteUsers(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
+
 	for _, inviteeEmail := range inviteReq.UserEmails {
 		// check if user with email exists, then ignore
 		_, err := logic.GetUser(inviteeEmail)

+ 31 - 0
logic/user_mgmt.go

@@ -212,6 +212,37 @@ func DeleteRole(rid models.UserRole) error {
 	return database.DeleteRecord(database.USER_PERMISSIONS_TABLE_NAME, rid.String())
 }
 
+func ValidateCreateGroupReq(g models.UserGroup) error {
+	// check platform role is valid
+	_, err := GetRole(g.PlatformRole)
+	if err != nil {
+		err = fmt.Errorf("invalid platform role")
+		return err
+	}
+	// check if network roles are valid
+
+	return nil
+}
+func ValidateUpdateGroupReq(g models.UserGroup) error {
+	// check platform role is valid
+	_, err := GetRole(g.PlatformRole)
+	if err != nil {
+		err = fmt.Errorf("invalid platform role")
+		return err
+	}
+	for networkID := range g.NetworkRoles {
+		userRolesMap := g.NetworkRoles[networkID]
+		for roleID := range userRolesMap {
+			_, err := GetRole(roleID)
+			if err != nil {
+				err = fmt.Errorf("invalid network role")
+				return err
+			}
+		}
+	}
+	return nil
+}
+
 // CreateUserGroup - creates new user group
 func CreateUserGroup(g models.UserGroup) error {
 	// check if role already exists