usergroups.go 2.1 KB

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