aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/admin/handler.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-03-12 03:10:46 +0900
committernsfisis <nsfisis@gmail.com>2025-03-12 03:10:46 +0900
commit27168df997c298e871d34e58fdc726bf2e8a4954 (patch)
tree3bbd0db1eef071a9bd04d2d39cc92a01e5f1bc9d /backend/admin/handler.go
parent4848d10be595cbc257b1d43be1c924fdcf81284e (diff)
downloadiosdc-japan-2025-albatross-27168df997c298e871d34e58fdc726bf2e8a4954.tar.gz
iosdc-japan-2025-albatross-27168df997c298e871d34e58fdc726bf2e8a4954.tar.zst
iosdc-japan-2025-albatross-27168df997c298e871d34e58fdc726bf2e8a4954.zip
feat(backend): implement user edit page
Diffstat (limited to 'backend/admin/handler.go')
-rw-r--r--backend/admin/handler.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/backend/admin/handler.go b/backend/admin/handler.go
index 3b8af23..bce4845 100644
--- a/backend/admin/handler.go
+++ b/backend/admin/handler.go
@@ -64,6 +64,7 @@ func (h *Handler) RegisterHandlers(g *echo.Group) {
g.GET("/dashboard", h.getDashboard)
g.GET("/users", h.getUsers)
g.GET("/users/:userID", h.getUserEdit)
+ g.POST("/users/:userID", h.postUserEdit)
g.POST("/users/:userID/fetch-icon", h.postUserFetchIcon)
g.GET("/games", h.getGames)
g.GET("/games/:gameID", h.getGameEdit)
@@ -128,6 +129,40 @@ func (h *Handler) getUserEdit(c echo.Context) error {
})
}
+func (h *Handler) postUserEdit(c echo.Context) error {
+ userID, err := strconv.Atoi(c.Param("userID"))
+ if err != nil {
+ return echo.NewHTTPError(http.StatusBadRequest, "Invalid user_id")
+ }
+
+ displayName := c.FormValue("display_name")
+ iconPathRaw := c.FormValue("icon_path")
+ isAdmin := (c.FormValue("is_admin") != "")
+ labelRaw := c.FormValue("label")
+
+ var iconPath *string
+ if iconPathRaw != "" {
+ iconPath = &iconPathRaw
+ }
+ var label *string
+ if labelRaw != "" {
+ label = &labelRaw
+ }
+
+ err = h.q.UpdateUser(c.Request().Context(), db.UpdateUserParams{
+ UserID: int32(userID),
+ DisplayName: displayName,
+ IconPath: iconPath,
+ IsAdmin: isAdmin,
+ Label: label,
+ })
+ if err != nil {
+ return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
+ }
+
+ return c.Redirect(http.StatusSeeOther, basePath+"/admin/users")
+}
+
func (h *Handler) postUserFetchIcon(c echo.Context) error {
userID, err := strconv.Atoi(c.Param("userID"))
if err != nil {