Full refactor of codebase
This commit is contained in:
57
src/handlers/user.go
Normal file
57
src/handlers/user.go
Normal file
@@ -0,0 +1,57 @@
|
||||
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")
|
||||
}
|
||||
Reference in New Issue
Block a user