package handler import ( "net/http" "sql-platform/internal/model" "github.com/gin-gonic/gin" ) // GET /api/v1/ldap-config func GetLDAPConfig(c *gin.Context) { var configs []model.LDAPConfig model.DB.Order("id").Find(&configs) if len(configs) == 0 { c.JSON(http.StatusOK, nil) return } // mask password configs[0].AdminPassword = "******" c.JSON(http.StatusOK, configs[0]) } // PUT /api/v1/ldap-config func UpdateLDAPConfig(c *gin.Context) { var input map[string]interface{} if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"detail": err.Error()}) return } var configs []model.LDAPConfig model.DB.Order("id").Find(&configs) if len(configs) == 0 { // create new config := model.LDAPConfig{} if v, ok := input["ldap_host"].(string); ok { config.LDAPHost = v } if v, ok := input["base_dn"].(string); ok { config.BaseDN = v } if v, ok := input["admin_dn"].(string); ok { config.AdminDN = v } if v, ok := input["admin_password"].(string); ok && v != "******" { config.AdminPassword = v } if v, ok := input["search_filter"].(string); ok { config.SearchFilter = &v } if v, ok := input["user_mapping"].(string); ok { config.UserMapping = &v } if v, ok := input["ldap_port"].(float64); ok { port := int(v) config.LDAPPort = &port } if v, ok := input["use_ldaps"].(bool); ok { config.UseLDAPS = &v } model.DB.Create(&config) c.JSON(http.StatusOK, config) } else { // update existing if pw, ok := input["admin_password"].(string); ok && pw == "******" { delete(input, "admin_password") } model.DB.Model(&configs[0]).Updates(input) model.DB.First(&configs[0], configs[0].ID) configs[0].AdminPassword = "******" c.JSON(http.StatusOK, configs[0]) } } // POST /api/v1/ldap-config/test func TestLDAPConnection(c *gin.Context) { // TODO: actual LDAP connection test c.JSON(http.StatusOK, gin.H{ "success": true, "message": "LDAP connection test (placeholder)", }) } // POST /api/v1/ldap-config/ou-list func ListLDAPOUs(c *gin.Context) { // TODO: actual LDAP OU list c.JSON(http.StatusOK, []interface{}{}) } // POST /api/v1/ldap-config/user-list func ListLDAPUsers(c *gin.Context) { // TODO: actual LDAP user list c.JSON(http.StatusOK, []interface{}{}) } // POST /api/v1/ldap-config/create-ou func CreateLDAPOU(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "OU created (placeholder)"}) } // POST /api/v1/ldap-config/create-user func CreateLDAPUser(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "User created (placeholder)"}) } // POST /api/v1/ldap-config/batch-import-ldap func BatchImportLDAP(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "Batch import (placeholder)", "count": 0}) }