mirror of
https://github.com/axzilla/templui.git
synced 2025-02-19 07:37:54 +00:00
feat(server): add middleware to populate context with url path
This commit is contained in:
parent
c5d2aa3c95
commit
eeba21442c
@ -44,7 +44,14 @@ func main() {
|
||||
"cdnjs.cloudflare.com", // highlight.js
|
||||
},
|
||||
}
|
||||
wrappedMux := middleware.CacheControlMiddleware(middleware.WithPreviewCheck(mw.WithCSP(cspConfig)(mux)))
|
||||
|
||||
wrappedMux := middleware.WithURLPathValue(
|
||||
middleware.CacheControlMiddleware(
|
||||
middleware.WithPreviewCheck(
|
||||
mw.WithCSP(cspConfig)(mux),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
mux.Handle("GET /", templ.Handler(pages.Landing()))
|
||||
mux.Handle("GET /docs/components", http.RedirectHandler("/docs/components/accordion", http.StatusSeeOther))
|
||||
@ -105,3 +112,4 @@ func SetupAssetsRoutes(mux *http.ServeMux) {
|
||||
|
||||
mux.Handle("GET /assets/", http.StripPrefix("/assets/", assetHandler))
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/axzilla/templui/internal/config"
|
||||
"github.com/axzilla/templui/internal/utils"
|
||||
)
|
||||
|
||||
func WithPreviewCheck(next http.Handler) http.Handler {
|
||||
@ -25,3 +26,17 @@ func CacheControlMiddleware(next http.Handler) http.Handler {
|
||||
next.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
|
||||
// WithURLPathValue adds the current URL's path to the context.
|
||||
func WithURLPathValue(next http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := context.WithValue(
|
||||
r.Context(),
|
||||
utils.CtxURLPathValueKey,
|
||||
r.URL.Path,
|
||||
)
|
||||
|
||||
next.ServeHTTP(w, r.WithContext(ctx))
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,9 @@ import (
|
||||
"encoding/base64"
|
||||
)
|
||||
|
||||
type CtxKey string
|
||||
|
||||
const CtxURLPathValueKey = CtxKey("url_value")
|
||||
func GenerateNonce() string {
|
||||
nonceBytes := make([]byte, 16)
|
||||
_, err := rand.Read(nonceBytes)
|
||||
|
Loading…
x
Reference in New Issue
Block a user