feat: 新增日志中心、功能优化与代码重构

- 新增 log_datasource.go / log_proxy.go / user_api_token.go 后端控制器
- 新增 log_datasource.go model
- 新增 monitor/log-center.ts API 模块
- 新增 LogCenter 前端组件及页面
- 重构 deployment 相关组件 (HPDA/UpdateImageModal/bundle-yaml 等)
- 新增 ResetPasswordDialog / code-snippet-block / copy-button 等 UI 组件
- 重构多个 k8s 相关组件 (TopologyView/ResourceVisualEditor/PodFileBrowser 等)
- 更新多个 API 和工具函数 (auth.ts/monitor/index.ts/request.ts 等)
- 更新静态资源 (index.html + 新 JS/CSS bundle)
- 删除废弃静态资源文件
This commit is contained in:
Logan committed 2026-06-26 23:18:05 +08:00
1 parent 5ca0e6d83a
commit 8d46e8f352
197 files changed
+5014 -815

No files matched your search

+32
View File
@@ -358,3 +358,35 @@ func (h *UserHandler) ImportTemplate(c *gin.Context) {
c.Header("Content-Disposition", "attachment; filename=users_import_template.csv")
c.String(http.StatusOK, csv)
}
// ResetUserPassword 管理员重置用户密码(仅本地账号)// Logan.Li
// POST /api/v1/admin/users/:id/reset-password
func (h *UserHandler) ResetUserPassword(c *gin.Context) {
id, _ := strconv.Atoi(c.Param("id"))
var req struct {
NewPassword string `json:"new_password" binding:"required,min=6,max=32"`
}
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, model.Response{Code: 400, Message: "请求参数错误: " + err.Error()})
return
}
var user model.User
if err := h.db.First(&user, id).Error; err != nil {
c.JSON(http.StatusNotFound, model.Response{Code: 404, Message: "用户不存在"})
return
}
if user.AuthSource == "ldap" {
c.JSON(http.StatusBadRequest, model.Response{Code: 400, Message: "LDAP 用户请在 LDAP 目录中重置密码"})
return
}
hashed, err := bcrypt.GenerateFromPassword([]byte(req.NewPassword), bcrypt.DefaultCost)
if err != nil {
c.JSON(http.StatusInternalServerError, model.Response{Code: 500, Message: "密码加密失败"})
return
}
if err := h.db.Model(&user).Update("password", string(hashed)).Error; err != nil {
c.JSON(http.StatusInternalServerError, model.Response{Code: 500, Message: "重置失败"})
return
}
c.JSON(http.StatusOK, model.Response{Code: 200, Message: "密码已重置"})
}