ducky-dash/handler/shared.go

50 lines
1.3 KiB
Go

package handler
import (
"log/slog"
"net/http"
"git.duckylabs.xyz/duckbox/ducky-dash/db"
"git.duckylabs.xyz/duckbox/ducky-dash/models"
"github.com/a-h/templ"
)
func render(r *http.Request, w http.ResponseWriter, component templ.Component) error {
return component.Render(r.Context(), w)
}
func hxRedirect(w http.ResponseWriter, r *http.Request, to string) error {
if len(r.Header.Get("HX-Request")) > 0 {
w.Header().Set("HX-Redirect", to)
w.WriteHeader(http.StatusSeeOther)
return nil
}
http.Redirect(w, r, to, http.StatusSeeOther)
return nil
}
func getAuthenticatedUser(r *http.Request) models.AuthenticatedUser {
user, ok := r.Context().Value(models.UserContextKey).(models.AuthenticatedUser)
if !ok {
return models.AuthenticatedUser{}
}
return user
}
func getOrganisationUsers(r http.Request) []models.Account {
// TODO: Get users that are only in the authenticated user's org
user_accounts, err := db.GetAllAccounts()
if err != nil {
return []models.Account{}
}
return user_accounts
}
func MakeHandler(h func(http.ResponseWriter, *http.Request) error) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
if err := h(w, r); err != nil {
slog.Error("internal server error", "err", err, "path", r.URL.Path)
}
}
}