新增用户管理和个人信息功能,支持CRUD操作和密码修改

This commit is contained in:
2026-07-03 10:18:08 +08:00
parent ca9b1e751c
commit e65b31abb0
8 changed files with 801 additions and 4 deletions
+44
View File
@@ -66,6 +66,50 @@ func Login(c *gin.Context) {
})
}
type changePasswordRequest struct {
OldPassword string `json:"old_password" binding:"required"`
NewPassword string `json:"new_password" binding:"required"`
}
func ChangePassword(c *gin.Context) {
var req changePasswordRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "请输入原密码和新密码"})
return
}
if len(req.NewPassword) < 6 {
c.JSON(http.StatusBadRequest, gin.H{"error": "新密码长度不能少于6位"})
return
}
userID, _ := c.Get("user_id")
var user model.User
if err := db.DB.First(&user, userID).Error; err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "用户不存在"})
return
}
if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(req.OldPassword)); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "原密码错误"})
return
}
hash, err := bcrypt.GenerateFromPassword([]byte(req.NewPassword), bcrypt.DefaultCost)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "密码加密失败"})
return
}
if err := db.DB.Model(&user).Update("password", string(hash)).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "密码修改失败"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "密码修改成功"})
}
func Me(c *gin.Context) {
userID, _ := c.Get("user_id")
username, _ := c.Get("username")