package handlers import ( "log" "strings" "github.com/ascyii/qrank/src/repository" "github.com/ascyii/qrank/src/templates" "github.com/ascyii/qrank/src/utils" "github.com/gin-gonic/gin" ) func getUserView(c *gin.Context) { slug := c.Param("userSlug") u := repository.FindUser(slug) if u == nil { c.String(404, "User not found") return } // Check if own user var own bool if slug == u.Slug { own = true } templates.Render(c, "user", gin.H{"User": u, "Own": own}) } func getMe(c *gin.Context) { u := repository.FindUser(c) templates.Render(c, "user", gin.H{"User": u, "Own": true}) } func postMe(c *gin.Context) { u := repository.FindUser(c) if u == nil { c.Redirect(302, "/login") return } newU := strings.TrimSpace(c.PostForm("username")) if newU == "" || newU == u.Username { c.Redirect(302, "/me") return } // Update username and slug u.Username = newU u.Slug = utils.Slugify(newU) if err := repository.EnsureUniqueUsernameAndSlug(u); err != nil { log.Println("unique username error:", err) } if err := repository.GetDB().Save(u).Error; err != nil { log.Println("save user:", err) } c.Redirect(302, "/me") }