From 8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Fri, 15 Aug 2025 19:20:48 +0100 Subject: Implement OIDC --- web/web.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'web/web.go') diff --git a/web/web.go b/web/web.go index 81ed6be..d823d46 100644 --- a/web/web.go +++ b/web/web.go @@ -4,25 +4,33 @@ import ( "embed" "io/fs" "net/http" + "regexp" ) -//go:generate npm ci +//go:generate npm install //go:generate npm run generate //go:embed all:.output/public var fsys embed.FS +var urlFileRegexp = regexp.MustCompile(`[\w\-/]+\.[a-zA-Z]+$`) type WebFileServer struct { - server http.Handler + root fs.FS + handler http.Handler } func NewWebFileServer() *WebFileServer { fsys, _ := fs.Sub(fsys, ".output/public") return &WebFileServer{ - server: http.FileServerFS(fsys), + root: fsys, + handler: http.FileServerFS(fsys), } } func (fs *WebFileServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { - fs.server.ServeHTTP(w, r) + if p := r.URL.Path; p != "/" && !urlFileRegexp.MatchString(p) { + http.ServeFileFS(w, r, fs.root, "index.html") + return + } + fs.handler.ServeHTTP(w, r) } -- cgit v1.2.3-70-g09d2