aboutsummaryrefslogtreecommitdiff
path: root/admin.go
diff options
context:
space:
mode:
authorMrArmonius <mrarmonius@gmail.com>2021-07-12 17:08:56 +0200
committerGitea <gitea@fake.local>2021-07-22 10:41:06 +0200
commit3d7b4a9f68f5b5c06bc6c039c90ee8406a56e500 (patch)
tree7e3f9f48b0213bf04413f387826b7ea173cca337 /admin.go
parent353f9600f3f1ce59c6faa825203f50b48017e44f (diff)
downloadguichet-3d7b4a9f68f5b5c06bc6c039c90ee8406a56e500.tar.gz
guichet-3d7b4a9f68f5b5c06bc6c039c90ee8406a56e500.zip
Add Datalist to help search users or group in LDAP admin page
Diffstat (limited to 'admin.go')
-rw-r--r--admin.go109
1 files changed, 63 insertions, 46 deletions
diff --git a/admin.go b/admin.go
index 0f78bd7..5314ea8 100644
--- a/admin.go
+++ b/admin.go
@@ -132,6 +132,8 @@ type AdminLDAPTplData struct {
HasGroups bool
Groups []EntryName
+ ListMemGro map[string]string
+
Error string
Success bool
}
@@ -360,32 +362,30 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
}
members := []EntryName{}
- if len(members_dn) > 0 {
- mapDnToName := make(map[string]string)
- searchRequest = ldap.NewSearchRequest(
- config.UserBaseDN,
- ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
- fmt.Sprintf("(objectClass=organizationalPerson)"),
- []string{"dn", "displayname", "description"},
- nil)
- sr, err := login.conn.Search(searchRequest)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- 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,
- Name: mapDnToName[memdn],
- })
+ mapDnToNameMember := make(map[string]string)
+ searchRequest = ldap.NewSearchRequest(
+ config.UserBaseDN,
+ ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
+ fmt.Sprintf("(objectClass=organizationalPerson)"),
+ []string{"dn", "displayname", "description"},
+ nil)
+ sr, err = login.conn.Search(searchRequest)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ for _, ent := range sr.Entries {
+ mapDnToNameMember[ent.DN] = ent.GetAttributeValue("displayname")
+ if mapDnToNameMember[ent.DN] == "" {
+ mapDnToNameMember[ent.DN] = ent.GetAttributeValue("description")
}
}
+ for _, memdn := range members_dn {
+ members = append(members, EntryName{
+ DN: memdn,
+ Name: mapDnToNameMember[memdn],
+ })
+ }
groups_dn := []string{}
if gp, ok := props["memberof"]; ok {
@@ -394,28 +394,26 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
}
groups := []EntryName{}
- if len(groups_dn) > 0 {
- mapDnToName := make(map[string]string)
- searchRequest = ldap.NewSearchRequest(
- config.GroupBaseDN,
- ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
- fmt.Sprintf("(objectClass=groupOfNames)"),
- []string{"dn", "description"},
- nil)
- sr, err := login.conn.Search(searchRequest)
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- for _, ent := range sr.Entries {
- mapDnToName[ent.DN] = ent.GetAttributeValue("description")
- }
- for _, grpdn := range groups_dn {
- groups = append(groups, EntryName{
- DN: grpdn,
- Name: mapDnToName[grpdn],
- })
- }
+ mapDnToNameGroup := make(map[string]string)
+ searchRequest = ldap.NewSearchRequest(
+ config.GroupBaseDN,
+ ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
+ fmt.Sprintf("(objectClass=groupOfNames)"),
+ []string{"dn", "description"},
+ nil)
+ sr, err = login.conn.Search(searchRequest)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ for _, ent := range sr.Entries {
+ mapDnToNameGroup[ent.DN] = ent.GetAttributeValue("description")
+ }
+ for _, grpdn := range groups_dn {
+ groups = append(groups, EntryName{
+ DN: grpdn,
+ Name: mapDnToNameGroup[grpdn],
+ })
}
// Get children
@@ -465,6 +463,23 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
}
}
+ //Get the members or groups existing
+ var ExistList map[string]string
+ if hasMembers {
+ ExistList = mapDnToNameMember
+ //Suppress the members already in the group
+ for _, value := range members {
+ delete(ExistList, value.DN)
+ }
+ } else if hasGroups {
+ ExistList = mapDnToNameGroup
+ //Delete the groups where the user is already a member
+ for _, value := range groups {
+ delete(ExistList, value.DN)
+ }
+ }
+
+
templateAdminLDAP.Execute(w, &AdminLDAPTplData{
DN: dn,
@@ -479,6 +494,8 @@ func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
HasGroups: len(groups) > 0 || hasGroups,
Groups: groups,
+ ListMemGro: ExistList,
+
Error: dError,
Success: dSuccess,
})