grafana/pkg/services/ldap/helpers.go
Marcos de Oliveira 91582ba03d
LDAP: Make LDAP attribute mapping case-insensitive (#58992)
* Make LDAP attribute mapping case-insensitive

* Add test case with attribute name different from schema's

* Add fix to getArrayAttribute also and add test with mismatched letter
case.

* Update pkg/services/ldap/helpers.go

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
2022-11-22 13:47:53 +01:00

58 lines
999 B
Go

package ldap
import (
"strings"
"gopkg.in/ldap.v3"
)
func IsMemberOf(memberOf []string, group string) bool {
if group == "*" {
return true
}
for _, member := range memberOf {
if strings.EqualFold(member, group) {
return true
}
}
return false
}
func appendIfNotEmpty(slice []string, values ...string) []string {
for _, v := range values {
if v != "" {
slice = append(slice, v)
}
}
return slice
}
func getAttribute(name string, entry *ldap.Entry) string {
if strings.ToLower(name) == "dn" {
return entry.DN
}
for _, attr := range entry.Attributes {
if strings.EqualFold(attr.Name, name) {
if len(attr.Values) > 0 {
return attr.Values[0]
}
}
}
return ""
}
func getArrayAttribute(name string, entry *ldap.Entry) []string {
if strings.ToLower(name) == "dn" {
return []string{entry.DN}
}
for _, attr := range entry.Attributes {
if strings.EqualFold(attr.Name, name) && len(attr.Values) > 0 {
return attr.Values
}
}
return []string{}
}