Use more appropriate description
instead of displayname
for everything except users
This commit is contained in:
parent
3fbbe61a46
commit
b3d6854d82
4 changed files with 59 additions and 38 deletions
66
admin.go
66
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 {
|
||||
|
|
|
@ -36,19 +36,28 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<label for="idtype">Type d'identifiant:</label>
|
||||
<input type="text" {{if .IsTemplated}}disabled="disabled"{{end}} id="idtype" name="idtype" class="form-control" value="{{ .IdType }}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="displayname">Nom:</label>
|
||||
<input type="text" id="displayname" name="displayname" class="form-control" value="{{ .DisplayName }}" />
|
||||
<input type="text" {{if .Template}}disabled="disabled"{{end}} id="idtype" name="idtype" class="form-control" value="{{ .IdType }}" />
|
||||
</div>
|
||||
{{ if eq .Template "user" }}
|
||||
<div class="form-group">
|
||||
<label for="displayname">Nom:</label>
|
||||
<input type="text" id="displayname" name="displayname" class="form-control" value="{{ .DisplayName }}" />
|
||||
</div>
|
||||
<input type="hidden" name="description" value="" />
|
||||
{{ else }}
|
||||
<div class="form-group">
|
||||
<label for="description">Description:</label>
|
||||
<input type="text" id="description" name="description" class="form-control" value="{{ .Description }}" />
|
||||
</div>
|
||||
<input type="hidden" name="displayname" value="" />
|
||||
{{ end }}
|
||||
<div class="form-group">
|
||||
<label for="soc">StructuralObjectClass:</label>
|
||||
<input type="text" {{if .IsTemplated}}disabled="disabled"{{end}} id="soc" name="soc" class="form-control" value="{{ .StructuralObjectClass }}" />
|
||||
<input type="text" {{if .Template}}disabled="disabled"{{end}} id="soc" name="soc" class="form-control" value="{{ .StructuralObjectClass }}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="oc">ObjectClass:</label>
|
||||
<textarea rows="5" {{if .IsTemplated}}disabled="disabled"{{end}} id="oc" name="oc" class="form-control">{{ .ObjectClass }}</textarea>
|
||||
<textarea rows="5" {{if .Template}}disabled="disabled"{{end}} id="oc" name="oc" class="form-control">{{ .ObjectClass }}</textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Créer l'objet</button>
|
||||
</form>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
{{$group.GetAttributeValue $root.GroupNameAttr}}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{$group.GetAttributeValue "displayname"}}</td>
|
||||
<td>{{$group.GetAttributeValue "description"}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
{{.Identifier}}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{.DisplayName}}</td>
|
||||
<td>{{.Name}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
|
@ -125,7 +125,7 @@
|
|||
{{range .Members}}
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-3">
|
||||
<strong>{{.DisplayName}}</strong>
|
||||
<strong>{{.Name}}</strong>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<a href="/admin/ldap/{{.DN}}">{{.DN}}</a>
|
||||
|
@ -162,7 +162,7 @@
|
|||
{{range .Groups}}
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-3">
|
||||
<strong>{{.DisplayName}}</strong>
|
||||
<strong>{{.Name}}</strong>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<a href="/admin/ldap/{{.DN}}">{{.DN}}</a>
|
||||
|
|
Loading…
Reference in a new issue