mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-15 13:21:14 +08:00

* Move ee code to ee package and unify ee status to IsPro * Consolidate naming for paid/professional/enterprise version as "pro". Notes: - Changes image tags - Changes build tags - Changes package names - Doesn't change links to docs that mention "ee" - Doesn't change parameters sent to PostHog that mention "ee" * Revert docker image tag being -pro, back to -ee * Revert go build tag being pro, back to ee * Add build tags for some ee content * [2] Revert go build tag being pro, back to ee * Fix test workflow * Add a json tag to be backwards compatible with frontend "IsEE" check * Add a json tag for the serverconfig struct for IsEE * Ammend json tag to Is_EE * fix ee tags --------- Co-authored-by: Abhishek Kondur <abhi281342@gmail.com>
74 lines
2.2 KiB
Go
74 lines
2.2 KiB
Go
package controllers
|
|
|
|
import (
|
|
"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(http.MethodGet)
|
|
r.HandleFunc("/api/usergroups/{usergroup}", logic.SecurityCheck(true, http.HandlerFunc(createUserGroup))).Methods(http.MethodPost)
|
|
r.HandleFunc("/api/usergroups/{usergroup}", logic.SecurityCheck(true, http.HandlerFunc(deleteUserGroup))).Methods(http.MethodDelete)
|
|
}
|
|
|
|
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)
|
|
}
|