36 lines
		
	
	
		
			829 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			829 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package ldap
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/nmcclain/ldap"
 | |
| 	"goauthentik.io/outpost/pkg/models"
 | |
| )
 | |
| 
 | |
| func AKAttrsToLDAP(attrs interface{}) []*ldap.EntryAttribute {
 | |
| 	attrList := []*ldap.EntryAttribute{}
 | |
| 	for attrKey, attrValue := range attrs.(map[string]interface{}) {
 | |
| 		entry := &ldap.EntryAttribute{Name: attrKey}
 | |
| 		switch t := attrValue.(type) {
 | |
| 		case []string:
 | |
| 			entry.Values = t
 | |
| 		case string:
 | |
| 			entry.Values = []string{t}
 | |
| 		}
 | |
| 		attrList = append(attrList, entry)
 | |
| 	}
 | |
| 	return attrList
 | |
| }
 | |
| 
 | |
| func (pi *ProviderInstance) GroupsForUser(user *models.User) []string {
 | |
| 	groups := make([]string, len(user.Groups))
 | |
| 	for i, group := range user.Groups {
 | |
| 		groups[i] = pi.GetGroupDN(group)
 | |
| 	}
 | |
| 	return groups
 | |
| }
 | |
| 
 | |
| func (pi *ProviderInstance) GetGroupDN(group *models.Group) string {
 | |
| 	return fmt.Sprintf("cn=%s,%s", *group.Name, pi.GroupDN)
 | |
| }
 | 
