| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | package controllerimport (	"encoding/json"	"errors"	"net/http"	"github.com/gravitl/netmaker/logger"	"github.com/gravitl/netmaker/logic"	"github.com/gorilla/mux"	"github.com/gravitl/netmaker/logic/pro"	"github.com/gravitl/netmaker/models/promodels")func userGroupsHandlers(r *mux.Router) {	r.HandleFunc("/api/usergroups", logic.SecurityCheck(true, http.HandlerFunc(getUserGroups))).Methods("GET")	r.HandleFunc("/api/usergroups/{usergroup}", logic.SecurityCheck(true, http.HandlerFunc(createUserGroup))).Methods("POST")	r.HandleFunc("/api/usergroups/{usergroup}", logic.SecurityCheck(true, http.HandlerFunc(deleteUserGroup))).Methods("DELETE")}func getUserGroups(w http.ResponseWriter, r *http.Request) {	w.Header().Set("Content-Type", "application/json")	logger.Log(1, r.Header.Get("user"), "requested fetching user groups")	userGroups, err := pro.GetUserGroups()	if err != nil {		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))		return	}	// Returns all the groups in JSON format	w.WriteHeader(http.StatusOK)	json.NewEncoder(w).Encode(userGroups)}func createUserGroup(w http.ResponseWriter, r *http.Request) {	w.Header().Set("Content-Type", "application/json")	var params = mux.Vars(r)	newGroup := params["usergroup"]	logger.Log(1, r.Header.Get("user"), "requested creating user group", newGroup)	if newGroup == "" {		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("no group name provided"), "badrequest"))		return	}	err := pro.InsertUserGroup(promodels.UserGroupName(newGroup))	if err != nil {		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))		return	}	w.WriteHeader(http.StatusOK)}func deleteUserGroup(w http.ResponseWriter, r *http.Request) {	var params = mux.Vars(r)	groupToDelete := params["usergroup"]	logger.Log(1, r.Header.Get("user"), "requested deleting user group", groupToDelete)	if groupToDelete == "" {		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("no group name provided"), "badrequest"))		return	}	if err := pro.DeleteUserGroup(promodels.UserGroupName(groupToDelete)); err != nil {		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))		return	}	w.WriteHeader(http.StatusOK)}
 |