diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2025-08-15 19:20:48 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2025-08-15 19:20:48 +0100 |
| commit | 8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed (patch) | |
| tree | 7b4f203d92f4b99b1e98fac314415e293984196b /web/web.go | |
| parent | 4697556cac819c47d068819b9fc9c3b4ea84e279 (diff) | |
Implement OIDC
Diffstat (limited to 'web/web.go')
| -rw-r--r-- | web/web.go | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -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) } |
