From e7c98808bb5a689e35922e331e69f1693cab5589 Mon Sep 17 00:00:00 2001 From: sentriz Date: Wed, 31 Jul 2019 17:00:44 +0100 Subject: [PATCH] add 404 handler for admin --- _do_run_server_live | 2 +- assets/pages/not_found.tmpl | 7 +++++++ server/ctrladmin/ctrl.go | 12 ++++++------ server/ctrladmin/handlers.go | 4 ++++ server/ctrlsubsonic/testdata/db | Bin 114688 -> 114688 bytes server/server.go | 1 + 6 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 assets/pages/not_found.tmpl 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" }} +
+
+ page not found +
+
+{{ 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 62bb8ea524c9c2702c4a60d4faa58a86e620a908..6724d28e25b4c8f07a6f174ea5fc7f2f4cf124ef 100644 GIT binary patch delta 22 dcmZo@U~gz(pCHZXHBrWy(W^0GYXakf{Qyx%2bKT; delta 22 dcmZo@U~gz(pCHZXF;T{u(W5b8YXakf{QyxN2a*5) 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) {