usergroups.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package controller
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "net/http"
  6. "github.com/gravitl/netmaker/logger"
  7. "github.com/gravitl/netmaker/logic"
  8. "github.com/gorilla/mux"
  9. "github.com/gravitl/netmaker/logic/pro"
  10. "github.com/gravitl/netmaker/models/promodels"
  11. )
  12. func userGroupsHandlers(r *mux.Router) {
  13. r.HandleFunc("/api/usergroups", logic.SecurityCheck(true, http.HandlerFunc(getUserGroups))).Methods("GET")
  14. r.HandleFunc("/api/usergroups/{usergroup}", logic.SecurityCheck(true, http.HandlerFunc(createUserGroup))).Methods("POST")
  15. r.HandleFunc("/api/usergroups/{usergroup}", logic.SecurityCheck(true, http.HandlerFunc(deleteUserGroup))).Methods("DELETE")
  16. }
  17. func getUserGroups(w http.ResponseWriter, r *http.Request) {
  18. w.Header().Set("Content-Type", "application/json")
  19. logger.Log(1, r.Header.Get("user"), "requested fetching user groups")
  20. userGroups, err := pro.GetUserGroups()
  21. if err != nil {
  22. logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
  23. return
  24. }
  25. // Returns all the groups in JSON format
  26. w.WriteHeader(http.StatusOK)
  27. json.NewEncoder(w).Encode(userGroups)
  28. }
  29. func createUserGroup(w http.ResponseWriter, r *http.Request) {
  30. w.Header().Set("Content-Type", "application/json")
  31. var params = mux.Vars(r)
  32. newGroup := params["usergroup"]
  33. logger.Log(1, r.Header.Get("user"), "requested creating user group", newGroup)
  34. if newGroup == "" {
  35. logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("no group name provided"), "badrequest"))
  36. return
  37. }
  38. err := pro.InsertUserGroup(promodels.UserGroupName(newGroup))
  39. if err != nil {
  40. logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
  41. return
  42. }
  43. w.WriteHeader(http.StatusOK)
  44. }
  45. func deleteUserGroup(w http.ResponseWriter, r *http.Request) {
  46. var params = mux.Vars(r)
  47. groupToDelete := params["usergroup"]
  48. logger.Log(1, r.Header.Get("user"), "requested deleting user group", groupToDelete)
  49. if groupToDelete == "" {
  50. logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("no group name provided"), "badrequest"))
  51. return
  52. }
  53. if err := pro.DeleteUserGroup(promodels.UserGroupName(groupToDelete)); err != nil {
  54. logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
  55. return
  56. }
  57. w.WriteHeader(http.StatusOK)
  58. }