package dashboard import ( "net/http" "github.com/xlgmokha/x/pkg/x" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/middleware" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/views" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls" ) type Controller struct { } func New() *Controller { return &Controller{} } func (c *Controller) MountTo(mux *http.ServeMux) { mux.Handle("GET /dashboard", x.Middleware[http.Handler]( http.HandlerFunc(c.Show), middleware.RequireUser(), )) mux.Handle("GET /dashboard/nav", http.HandlerFunc(c.Navigation)) } func (c *Controller) Show(w http.ResponseWriter, r *http.Request) { currentUser := cfg.CurrentUser.From(r.Context()) w.WriteHeader(http.StatusOK) w.Header().Add("Content-Type", "text/html") dto := &ViewDashboardDTO{CurrentUser: currentUser} if err := views.Render(w, "dashboard/show", dto); err != nil { pls.LogError(r.Context(), err) w.WriteHeader(http.StatusInternalServerError) return } } func (c *Controller) Navigation(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) w.Header().Add("Content-Type", "text/html") dto := &NavigationDTO{ CurrentUser: cfg.CurrentUser.From(r.Context()), IsLoggedIn: middleware.IsLoggedIn(r), } if err := views.Render(w, "dashboard/nav", dto); err != nil { pls.LogError(r.Context(), err) w.WriteHeader(http.StatusInternalServerError) return } }