diff --git a/_do_run_server_live b/_do_run_server_live
index 883873d..8e3cf15 100755
--- a/_do_run_server_live
+++ b/_do_run_server_live
@@ -6,4 +6,4 @@ if ! command -v 'entr' > /dev/null; then
exit 1
fi
-find server/assets/ | entr -r ./_do_run_server $@
+find assets/ | entr -r ./_do_run_server $@
diff --git a/assets/pages/not_found.tmpl b/assets/pages/not_found.tmpl
new file mode 100644
index 0000000..fe0ee3d
--- /dev/null
+++ b/assets/pages/not_found.tmpl
@@ -0,0 +1,7 @@
+{{ define "content" }}
+
+{{ end }}
diff --git a/server/ctrladmin/ctrl.go b/server/ctrladmin/ctrl.go
index 412656a..2574773 100644
--- a/server/ctrladmin/ctrl.go
+++ b/server/ctrladmin/ctrl.go
@@ -134,13 +134,13 @@ func (c *Controller) H(h adminHandler) http.Handler {
if resp.data == nil {
resp.data = &templateData{}
}
- session := r.Context().Value(key.Session).(*sessions.Session)
- resp.data.Flashes = session.Flashes()
- if err := session.Save(r, w); err != nil {
- http.Error(w, fmt.Sprintf("saving session: %v", err), 500)
- return
+ if session, ok := r.Context().Value(key.Session).(*sessions.Session); ok {
+ resp.data.Flashes = session.Flashes()
+ sessLogSave(w, r, session)
+ }
+ if user, ok := r.Context().Value(key.User).(*model.User); ok {
+ resp.data.User = user
}
- resp.data.User, _ = r.Context().Value(key.User).(*model.User)
buff := c.buffPool.Get()
defer c.buffPool.Put(buff)
tmpl, ok := c.templates[resp.template]
diff --git a/server/ctrladmin/handlers.go b/server/ctrladmin/handlers.go
index 7477ffe..6f8f525 100644
--- a/server/ctrladmin/handlers.go
+++ b/server/ctrladmin/handlers.go
@@ -15,6 +15,10 @@ import (
"senan.xyz/g/gonic/server/lastfm"
)
+func (c *Controller) ServeNotFound(w http.ResponseWriter, r *http.Request) *Response {
+ return &Response{template: "not_found.tmpl"}
+}
+
func (c *Controller) ServeLogin(w http.ResponseWriter, r *http.Request) *Response {
return &Response{template: "login.tmpl"}
}
diff --git a/server/ctrlsubsonic/testdata/db b/server/ctrlsubsonic/testdata/db
index 62bb8ea..6724d28 100644
Binary files a/server/ctrlsubsonic/testdata/db and b/server/ctrlsubsonic/testdata/db differ
diff --git a/server/server.go b/server/server.go
index 166c9ef..cbdec99 100644
--- a/server/server.go
+++ b/server/server.go
@@ -63,6 +63,7 @@ func (s *Server) SetupAdmin() error {
// begin public routes (creates session)
routPublic := s.router.PathPrefix("/admin").Subrouter()
routPublic.Use(ctrl.WithSession)
+ routPublic.NotFoundHandler = ctrl.H(ctrl.ServeNotFound)
routPublic.Handle("/login", ctrl.H(ctrl.ServeLogin))
routPublic.Handle("/login_do", ctrl.H(ctrl.ServeLoginDo))
assets.PrefixDo("static", func(path string, asset *assets.EmbeddedAsset) {