user_handler.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package api
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/porter-dev/porter/internal/queries"
  6. "github.com/porter-dev/porter/internal/models"
  7. )
  8. // HandleCreateUser validates a user form entry, converts the user to a gorm
  9. // model, and saves the user to the database
  10. func (app *App) HandleCreateUser(w http.ResponseWriter, r *http.Request) {
  11. form := &models.CreateUserForm{}
  12. if err := json.NewDecoder(r.Body).Decode(form); err != nil {
  13. app.handleUnprocessableEntity(err, w)
  14. return
  15. }
  16. if err := app.validator.Struct(form); err != nil {
  17. app.handleUnprocessableEntity(err, w)
  18. return
  19. }
  20. userModel, err := form.ToUser()
  21. if err != nil {
  22. app.handleUnprocessableEntity(err, w)
  23. return
  24. }
  25. user, err := queries.CreateUser(app.db, userModel)
  26. if err != nil {
  27. app.handleDataWriteFailure(err, w)
  28. return
  29. }
  30. app.logger.Info().Msgf("New user created: %d", user.ID)
  31. w.WriteHeader(http.StatusCreated)
  32. }
  33. // HandleReadUser is majestic
  34. func (app *App) HandleReadUser(w http.ResponseWriter, r *http.Request) {
  35. w.WriteHeader(http.StatusOK)
  36. w.Write([]byte("{}"))
  37. }
  38. // HandleUpdateUser is majestic
  39. func (app *App) HandleUpdateUser(w http.ResponseWriter, r *http.Request) {
  40. w.WriteHeader(http.StatusAccepted)
  41. }
  42. // HandleDeleteUser is majestic
  43. func (app *App) HandleDeleteUser(w http.ResponseWriter, r *http.Request) {
  44. w.WriteHeader(http.StatusAccepted)
  45. }
  46. // GenerateUser creates a new user based on a unique ID and a kubeconfig
  47. // func GenerateUser(id string, kubeconfig []byte) *User {
  48. // conf := kubernetes.KubeConfig{}
  49. // err := yaml.Unmarshal(kubeconfig, &conf)
  50. // // TODO -- HANDLE ERROR
  51. // if err != nil {
  52. // fmt.Println("ERROR IN UNMARSHALING")
  53. // }
  54. // // generate the user's clusters
  55. // clusters := conf.ToClusterConfigs()
  56. // return &User{
  57. // ID: id,
  58. // Clusters: clusters,
  59. // RawKubeConfig: kubeconfig,
  60. // }
  61. // }
  62. // // printUser is a helper function to print a user's config without sensitive information
  63. // func (u *User) printUser() {
  64. // for _, cluster := range u.Clusters {
  65. // fmt.Println(cluster.Name, cluster.Context, cluster.Server, cluster.User)
  66. // }
  67. // }