You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

helpers.go 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2014-2018 Grafana Labs
  2. // Released under the Apache 2.0 license
  3. package ldap
  4. import (
  5. "strings"
  6. ldap "github.com/go-ldap/ldap/v3"
  7. )
  8. func isMemberOf(memberOf []string, group string) bool {
  9. if group == "*" {
  10. return true
  11. }
  12. for _, member := range memberOf {
  13. if strings.EqualFold(member, group) {
  14. return true
  15. }
  16. }
  17. return false
  18. }
  19. func getArrayAttribute(name string, entry *ldap.Entry) []string {
  20. if strings.ToLower(name) == "dn" {
  21. return []string{entry.DN}
  22. }
  23. for _, attr := range entry.Attributes {
  24. if attr.Name == name && len(attr.Values) > 0 {
  25. return attr.Values
  26. }
  27. }
  28. return []string{}
  29. }
  30. func getAttribute(name string, entry *ldap.Entry) string {
  31. if strings.ToLower(name) == "dn" {
  32. return entry.DN
  33. }
  34. for _, attr := range entry.Attributes {
  35. if attr.Name == name {
  36. if len(attr.Values) > 0 {
  37. return attr.Values[0]
  38. }
  39. }
  40. }
  41. return ""
  42. }
  43. func appendIfNotEmpty(slice []string, values ...string) []string {
  44. for _, v := range values {
  45. if v != "" {
  46. slice = append(slice, v)
  47. }
  48. }
  49. return slice
  50. }