1package middleware
2
3import (
4 "net/http"
5
6 "github.com/go-chi/chi/v5"
7 "tangled.org/core/appview/pages"
8 "tangled.org/core/appview/state/userutil"
9)
10
11// EnsureDidOrHandle ensures the "user" url param is valid did/handle format.
12// If not, respond with 404
13func EnsureDidOrHandle(p *pages.Pages) middlewareFunc {
14 return func(next http.Handler) http.Handler {
15 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
16 user := chi.URLParam(r, "user")
17
18 // if using a DID or handle, just continue as per usual
19 if userutil.IsDid(user) || userutil.IsHandle(user) {
20 next.ServeHTTP(w, r)
21 return
22 }
23
24 // TODO: run Normalize middleware from here
25
26 p.Error404(w)
27 return
28 })
29 }
30}