diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-03-12 03:10:46 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-03-12 03:10:46 +0900 |
| commit | 27168df997c298e871d34e58fdc726bf2e8a4954 (patch) | |
| tree | 3bbd0db1eef071a9bd04d2d39cc92a01e5f1bc9d /backend/admin/handler.go | |
| parent | 4848d10be595cbc257b1d43be1c924fdcf81284e (diff) | |
| download | phperkaigi-2025-albatross-27168df997c298e871d34e58fdc726bf2e8a4954.tar.gz phperkaigi-2025-albatross-27168df997c298e871d34e58fdc726bf2e8a4954.tar.zst phperkaigi-2025-albatross-27168df997c298e871d34e58fdc726bf2e8a4954.zip | |
feat(backend): implement user edit page
Diffstat (limited to 'backend/admin/handler.go')
| -rw-r--r-- | backend/admin/handler.go | 35 |
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 { |
