aboutsummaryrefslogtreecommitdiff
path: root/admin.go
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2020-02-12 15:54:17 +0100
committerAlex Auvolat <alex@adnab.me>2020-02-12 15:54:17 +0100
commitb3d6854d82143ef62234a408ada01d4035c19b20 (patch)
tree2c901af5519971166b3bcd6d4fb2a299bef1c0cc /admin.go
parent3fbbe61a460b8d5415b61de505b4ac1ab8692b25 (diff)
downloadguichet-b3d6854d82143ef62234a408ada01d4035c19b20.tar.gz
guichet-b3d6854d82143ef62234a408ada01d4035c19b20.zip
Use more appropriate `description` instead of `displayname` for everything except users
Diffstat (limited to 'admin.go')
-rw-r--r--admin.go66
1 files changed, 39 insertions, 27 deletions
diff --git a/admin.go b/admin.go
index b480507..a0c33a6 100644
--- a/admin.go
+++ b/admin.go
@@ -98,7 +98,7 @@ func handleAdminGroups(w http.ResponseWriter, r *http.Request) {
config.GroupBaseDN,
ldap.ScopeSingleLevel, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(&(objectClass=groupOfNames))"),
- []string{config.GroupNameAttr, "dn", "displayname"},
+ []string{config.GroupNameAttr, "dn", "description"},
nil)
sr, err := login.conn.Search(searchRequest)
@@ -137,14 +137,14 @@ type AdminLDAPTplData struct {
}
type EntryName struct {
- DN string
- DisplayName string
+ DN string
+ Name string
}
type Child struct {
- DN string
- Identifier string
- DisplayName string
+ DN string
+ Identifier string
+ Name string
}
type PathItem struct {
@@ -337,7 +337,7 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
}
}
deletable := true
- for _, restricted := range []string{"displayname", "objectclass", "structuralobjectclass"} {
+ for _, restricted := range []string{"objectclass", "structuralobjectclass"} {
if strings.EqualFold(attr.Name, restricted) {
deletable = false
break
@@ -366,7 +366,7 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
config.UserBaseDN,
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectClass=organizationalPerson)"),
- []string{"dn", "displayname"},
+ []string{"dn", "displayname", "description"},
nil)
sr, err := login.conn.Search(searchRequest)
if err != nil {
@@ -375,11 +375,14 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
}
for _, ent := range sr.Entries {
mapDnToName[ent.DN] = ent.GetAttributeValue("displayname")
+ if mapDnToName[ent.DN] == "" {
+ mapDnToName[ent.DN] = ent.GetAttributeValue("description")
+ }
}
for _, memdn := range members_dn {
members = append(members, EntryName{
- DN: memdn,
- DisplayName: mapDnToName[memdn],
+ DN: memdn,
+ Name: mapDnToName[memdn],
})
}
}
@@ -397,7 +400,7 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
config.GroupBaseDN,
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectClass=groupOfNames)"),
- []string{"dn", "displayname"},
+ []string{"dn", "description"},
nil)
sr, err := login.conn.Search(searchRequest)
if err != nil {
@@ -405,12 +408,12 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
return
}
for _, ent := range sr.Entries {
- mapDnToName[ent.DN] = ent.GetAttributeValue("displayname")
+ mapDnToName[ent.DN] = ent.GetAttributeValue("description")
}
for _, grpdn := range groups_dn {
groups = append(groups, EntryName{
- DN: grpdn,
- DisplayName: mapDnToName[grpdn],
+ DN: grpdn,
+ Name: mapDnToName[grpdn],
})
}
}
@@ -420,7 +423,7 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
dn,
ldap.ScopeSingleLevel, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectclass=*)"),
- []string{"dn", "displayname"},
+ []string{"dn", "displayname", "description"},
nil)
sr, err = login.conn.Search(searchRequest)
@@ -433,10 +436,14 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
children := []Child{}
for _, item := range sr.Entries {
+ name := item.GetAttributeValue("displayname")
+ if name == "" {
+ name = item.GetAttributeValue("description")
+ }
children = append(children, Child{
- DN: item.DN,
- Identifier: strings.Split(item.DN, ",")[0],
- DisplayName: item.GetAttributeValue("displayname"),
+ DN: item.DN,
+ Identifier: strings.Split(item.DN, ",")[0],
+ Name: name,
})
}
@@ -478,15 +485,16 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
}
type CreateData struct {
- SuperDN string
- Path []PathItem
+ SuperDN string
+ Path []PathItem
+ Template string
IdType string
IdValue string
DisplayName string
+ Description string
StructuralObjectClass string
ObjectClass string
- IsTemplated bool
Error string
}
@@ -543,35 +551,35 @@ func handleAdminCreate(w http.ResponseWriter, r *http.Request) {
SuperDN: super_dn,
Path: path,
}
+ data.Template = template
if template == "user" {
data.IdType = config.UserNameAttr
data.StructuralObjectClass = "inetOrgPerson"
data.ObjectClass = "inetOrgPerson\norganizationalPerson\nperson\ntop"
- data.IsTemplated = true
} else if template == "group" {
data.IdType = config.UserNameAttr
data.StructuralObjectClass = "groupOfNames"
data.ObjectClass = "groupOfNames\ntop"
- data.IsTemplated = true
} else if template == "ou" {
data.IdType = "ou"
data.StructuralObjectClass = "organizationalUnit"
data.ObjectClass = "organizationalUnit\ntop"
- data.IsTemplated = true
} else {
data.IdType = "cn"
data.ObjectClass = "top"
+ data.Template = ""
}
if r.Method == "POST" {
r.ParseForm()
- if !data.IsTemplated {
+ if data.Template == "" {
data.IdType = strings.TrimSpace(strings.Join(r.Form["idtype"], ""))
data.StructuralObjectClass = strings.TrimSpace(strings.Join(r.Form["soc"], ""))
data.ObjectClass = strings.Join(r.Form["oc"], "")
}
data.IdValue = strings.TrimSpace(strings.Join(r.Form["idvalue"], ""))
data.DisplayName = strings.TrimSpace(strings.Join(r.Form["displayname"], ""))
+ data.Description = strings.TrimSpace(strings.Join(r.Form["description"], ""))
object_class := []string{}
for _, oc := range strings.Split(data.ObjectClass, "\n") {
@@ -593,11 +601,15 @@ func handleAdminCreate(w http.ResponseWriter, r *http.Request) {
dn := data.IdType + "=" + data.IdValue + "," + super_dn
req := ldap.NewAddRequest(dn, nil)
req.Attribute("objectClass", object_class)
- req.Attribute("structuralObjectClass",
- []string{data.StructuralObjectClass})
+ if data.StructuralObjectClass != "" {
+ req.Attribute("structuralObjectClass", []string{data.StructuralObjectClass})
+ }
if data.DisplayName != "" {
req.Attribute("displayname", []string{data.DisplayName})
}
+ if data.Description != "" {
+ req.Attribute("description", []string{data.Description})
+ }
err := login.conn.Add(req)
if err != nil {