mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 04:17:23 +00:00
Add user management features.
This commit is contained in:
@@ -277,6 +277,26 @@ func handleGetUserInfo(c fiber.Ctx) error {
|
||||
})
|
||||
}
|
||||
|
||||
func handleChangeUsername(c fiber.Ctx) error {
|
||||
uid, ok := c.Locals("uid").(uint)
|
||||
if !ok {
|
||||
return model.NewUnAuthorizedError("Unauthorized")
|
||||
}
|
||||
newUsername := c.FormValue("username")
|
||||
if newUsername == "" {
|
||||
return model.NewRequestError("Username is required")
|
||||
}
|
||||
user, err := service.ChangeUsername(uid, newUsername)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Status(fiber.StatusOK).JSON(model.Response[model.UserView]{
|
||||
Success: true,
|
||||
Data: user,
|
||||
Message: "Username changed successfully",
|
||||
})
|
||||
}
|
||||
|
||||
func AddUserRoutes(r fiber.Router) {
|
||||
u := r.Group("user")
|
||||
u.Post("/register", handleUserRegister)
|
||||
@@ -290,4 +310,5 @@ func AddUserRoutes(r fiber.Router) {
|
||||
u.Get("/search", handleSearchUsers)
|
||||
u.Post("/delete", handleDeleteUser)
|
||||
u.Get("/info", handleGetUserInfo)
|
||||
u.Post("/username", handleChangeUsername)
|
||||
}
|
||||
|
@@ -264,3 +264,18 @@ func GetUserByUsername(username string) (model.UserView, error) {
|
||||
}
|
||||
return user.ToView(), nil
|
||||
}
|
||||
|
||||
func ChangeUsername(uid uint, newUsername string) (model.UserView, error) {
|
||||
if len(newUsername) < 3 || len(newUsername) > 20 {
|
||||
return model.UserView{}, model.NewRequestError("Username must be between 3 and 20 characters")
|
||||
}
|
||||
user, err := dao.GetUserByID(uid)
|
||||
if err != nil {
|
||||
return model.UserView{}, err
|
||||
}
|
||||
user.Username = newUsername
|
||||
if err := dao.UpdateUser(user); err != nil {
|
||||
return model.UserView{}, err
|
||||
}
|
||||
return user.ToView(), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user