58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
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")
|
|
}
|