From af581a4def9a80f317906c31d332a131ce9eeb2e Mon Sep 17 00:00:00 2001 From: H3ALY Date: Tue, 28 Oct 2025 13:16:29 +0000 Subject: [PATCH] Fix ob: type not registered for interface: map[string]string & superfluous response.WriteHeader, as well as wired up to go to custom 500 messages. --- internal/handlers/account/signup.go | 7 +++---- internal/platform/bootstrap/loader.go | 8 +++++++- internal/platform/session/session.go | 2 -- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/handlers/account/signup.go b/internal/handlers/account/signup.go index de918b3..dbfd940 100644 --- a/internal/handlers/account/signup.go +++ b/internal/handlers/account/signup.go @@ -72,8 +72,8 @@ func SignupPost(c *gin.Context) { AcceptTerms: r.FormValue("accept_terms") == "on", } - errors := validateRegisterForm(db, form) - if len(errors) > 0 { + errMap := validateRegisterForm(db, form) + if len(errMap) > 0 { formMap := map[string]string{ "username": form.Username, "email": form.Email, @@ -85,7 +85,7 @@ func SignupPost(c *gin.Context) { }(), } sm.Put(r.Context(), "register.form", formMap) - sm.Put(r.Context(), "register.errors", errors) + sm.Put(r.Context(), "register.errors", errMap) sm.Put(r.Context(), "flash", "Please fix the highlighted errors.") c.Redirect(http.StatusSeeOther, "/account/signup") @@ -153,6 +153,5 @@ func validateRegisterForm(db *sql.DB, f registerForm) map[string]string { } func looksLikeEmail(s string) bool { - return strings.Count(s, "@") == 1 && strings.Contains(s, ".") } diff --git a/internal/platform/bootstrap/loader.go b/internal/platform/bootstrap/loader.go index d3a0450..05fe724 100644 --- a/internal/platform/bootstrap/loader.go +++ b/internal/platform/bootstrap/loader.go @@ -32,6 +32,7 @@ package bootstrap import ( "context" "database/sql" + "encoding/gob" "fmt" "net/http" "time" @@ -79,10 +80,15 @@ func Load(configPath string) (*App, error) { return nil, fmt.Errorf("ensure schema: %w", err) } + gob.Register(map[string]string{}) + gob.Register([]string{}) + gob.Register(time.Time{}) + sessions := session.New(cfg) router := gin.New() - router.Use(gin.Logger(), gin.Recovery()) + //router.Use(gin.Logger(), gin.Recovery()) + router.Use(gin.Logger()) router.Static("/static", "./web/static") router.StaticFile("/favicon.ico", "./web/static/favicon.ico") diff --git a/internal/platform/session/session.go b/internal/platform/session/session.go index ebc2f77..d88f605 100644 --- a/internal/platform/session/session.go +++ b/internal/platform/session/session.go @@ -1,7 +1,6 @@ package session import ( - "encoding/gob" "net/http" "time" @@ -11,7 +10,6 @@ import ( ) func New(cfg config.Config) *scs.SessionManager { - gob.Register(time.Time{}) s := scs.New() // Lifetime (absolute max age)