diff --git a/admin.go b/admin.go index e860abd..43c2334 100644 --- a/admin.go +++ b/admin.go @@ -79,7 +79,7 @@ func handleAdminUsers(w http.ResponseWriter, r *http.Request) { SN: "User", DisplayName: "New User", Mail: "newuser@lesgv.com", - }) + }, config, login) templateAdminUsers.Execute(w, data) } diff --git a/utils.go b/utils.go index fe46c17..2bd53ea 100644 --- a/utils.go +++ b/utils.go @@ -3,6 +3,8 @@ package main import ( "fmt" "log" + + "github.com/go-ldap/ldap/v3" // "bytes" // "crypto/rand" // "encoding/binary" @@ -27,8 +29,52 @@ type NewUser struct { Mail string SN string UID string + Description string } -func addNewUser(newUser NewUser) { - log.Printf(fmt.Sprint("Adding New User")) +func openLdap(config ConfigFile) *ldap.Conn { + l, err := ldap.DialURL(config.LdapServerAddr) + if err != nil { + log.Printf(fmt.Sprint("Erreur connect LDAP %v", err)) + return nil + } else { + return l + } +} + +func addNewUser(newUser NewUser, config ConfigFile, login LoginStatus) bool { + log.Printf(fmt.Sprint("Adding New User")) + // l := openLdap(config) + // l.Bind(config.) + dn := newUser.DN + req := ldap.NewAddRequest(dn, nil) + req.Attribute("objectClass", []string{"top", "inetOrgPerson"}) + if newUser.DisplayName != "" { + req.Attribute("displayName", []string{newUser.DisplayName}) + } + if newUser.GivenName != "" { + req.Attribute("givenName", []string{newUser.GivenName}) + } + if newUser.Mail != "" { + req.Attribute("mail", []string{newUser.Mail}) + } + // if newUser.Member != "" { + // req.Attribute("member", []string{newUser.Member}) + // } + if newUser.SN != "" { + req.Attribute("sn", []string{newUser.SN}) + } + if newUser.Description != "" { + req.Attribute("description", []string{newUser.Description}) + } + err := login.conn.Add(req) + // log.Printf(fmt.Sprintf("71: %v",err)) + // log.Printf(fmt.Sprintf("72: %v",req)) + // log.Printf(fmt.Sprintf("73: %v",newUser)) + if err != nil { + log.Printf(fmt.Sprintf("75: %v", err)) + return false + } else { + return true + } }