40 lines
846 B
Go
40 lines
846 B
Go
package site
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/gorilla/csrf"
|
|
datastar "github.com/starfederation/datastar/sdk/go"
|
|
)
|
|
|
|
func setupExamplesCSRF(examplesRouter chi.Router) error {
|
|
|
|
CSRF := csrf.Protect([]byte("32-byte-long-auth-key"))
|
|
|
|
examplesRouter.Route("/csrf/data", func(r chi.Router) {
|
|
r.Use(CSRF)
|
|
|
|
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
|
|
token := csrf.Token(r)
|
|
sse := datastar.NewSSE(w, r)
|
|
sse.MergeFragmentTempl(CSRFDemo(token))
|
|
})
|
|
|
|
r.Post("/", func(w http.ResponseWriter, r *http.Request) {
|
|
token := csrf.Token(r)
|
|
|
|
sse := datastar.NewSSE(w, r)
|
|
sse.MergeFragmentTempl(CSRFDemoResponse(
|
|
fmt.Sprintf("POST request received with token: %s", token),
|
|
),
|
|
datastar.WithSelectorID("responses"),
|
|
datastar.WithMergeAppend(),
|
|
)
|
|
})
|
|
})
|
|
|
|
return nil
|
|
}
|