fix: LDAP 测试连接 3s 超时 + 账号验证 search filter %s 替换 + LDAP 登录 fallback

- dialLDAP 辅助函数: 3s timeout 替代无超时 DialURL
- TestLDAPConnection: search_filter (uid=%s) 中 %s 未替换导致搜索失败
- tryLDAPAuth: 同样的 %s 替换 + timeout 3s
- auth.go 登录: 本地密码失败 → LDAP fallback → ldapInfo 判断修复
- BatchImportLDAP: 实现 LDAP 用户批量导入到本地 DB
- 前端 LdapConfigPage: LDAP 测试请求独立 10s timeout
- workflow.go: ResetUserPassword 实现
This commit is contained in:
logan committed 2026-05-26 14:42:31 +08:00
1 parent 95222d42ad
commit 5411cd6db9
5 files changed
+198 -32

No files matched your search

+17 -3
View File
@@ -2,7 +2,9 @@ package handler
import (
"net/http"
"strconv"
"golang.org/x/crypto/bcrypt"
"sql-platform/internal/model"
"github.com/gin-gonic/gin"
@@ -202,7 +204,19 @@ func ResetUserPassword(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"detail": err.Error()})
return
}
// TODO: actually hash and save
_ = userId
c.JSON(http.StatusOK, gin.H{"message": "Password reset (placeholder)"})
id, err := strconv.Atoi(userId)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"detail": "Invalid user ID"})
return
}
hash, err := bcrypt.GenerateFromPassword([]byte(input.NewPassword), bcrypt.DefaultCost)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"detail": "Hash failed"})
return
}
if err := model.DB.Model(&model.User{}).Where("id = ?", id).Update("hashed_password", string(hash)).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"detail": "Update failed"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Password reset successfully"})
}