router.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package router
  2. import (
  3. "github.com/go-chi/chi"
  4. "github.com/gorilla/sessions"
  5. "github.com/porter-dev/porter/server/api"
  6. "github.com/porter-dev/porter/server/requestlog"
  7. mw "github.com/porter-dev/porter/server/router/middleware"
  8. )
  9. // New creates a new Chi router instance
  10. func New(a *api.App, store sessions.Store, cookieName string) *chi.Mux {
  11. l := a.Logger()
  12. r := chi.NewRouter()
  13. auth := mw.NewAuth(store, cookieName)
  14. r.Route("/api", func(r chi.Router) {
  15. r.Use(mw.ContentTypeJSON)
  16. // /api/users routes
  17. r.Method("GET", "/users/{id}", auth.DoesUserIDMatch(requestlog.NewHandler(a.HandleReadUser, l), mw.URLParam))
  18. r.Method("GET", "/users/{id}/contexts", auth.DoesUserIDMatch(requestlog.NewHandler(a.HandleReadUserContexts, l), mw.URLParam))
  19. r.Method("POST", "/users", requestlog.NewHandler(a.HandleCreateUser, l))
  20. r.Method("PUT", "/users/{id}", auth.DoesUserIDMatch(requestlog.NewHandler(a.HandleUpdateUser, l), mw.URLParam))
  21. r.Method("DELETE", "/users/{id}", auth.DoesUserIDMatch(requestlog.NewHandler(a.HandleDeleteUser, l), mw.URLParam))
  22. r.Method("POST", "/login", requestlog.NewHandler(a.HandleLoginUser, l))
  23. r.Method("GET", "/auth/check", auth.BasicAuthenticate(requestlog.NewHandler(a.HandleAuthCheck, l)))
  24. r.Method("POST", "/logout", auth.BasicAuthenticate(requestlog.NewHandler(a.HandleLogoutUser, l)))
  25. // /api/charts routes
  26. r.Method("GET", "/charts", auth.BasicAuthenticate(requestlog.NewHandler(a.HandleListCharts, l)))
  27. r.Method("GET", "/charts/{name}/{revision}", auth.BasicAuthenticate(requestlog.NewHandler(a.HandleGetChart, l)))
  28. // /api/k8s routes
  29. r.Method("GET", "/k8s/namespaces", auth.BasicAuthenticate(requestlog.NewHandler(a.HandleListNamespaces, l)))
  30. })
  31. return r
  32. }