aboutsummaryrefslogtreecommitdiffstats
path: root/web/web.go
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2025-08-15 19:20:48 +0100
committerLeonardo Bishop <me@leonardobishop.com>2025-08-15 19:20:48 +0100
commit8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed (patch)
tree7b4f203d92f4b99b1e98fac314415e293984196b /web/web.go
parent4697556cac819c47d068819b9fc9c3b4ea84e279 (diff)
Implement OIDC
Diffstat (limited to 'web/web.go')
-rw-r--r--web/web.go16
1 files changed, 12 insertions, 4 deletions
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)
}