parent
6f893138a3
commit
49be2069f6
@ -0,0 +1,60 @@ |
||||
package main |
||||
|
||||
func (server *Server) memberOfAdd(member string, group string) { |
||||
// Retreive previous memberOf value
|
||||
memberGroups, err := server.getAttribute(member, ATTR_MEMBEROF) |
||||
if err != nil { |
||||
server.logger.Warnf("Could not add %s to memberOf of %s: %s", group, member, err) |
||||
return |
||||
} |
||||
|
||||
// Return early if group is already in memberOf
|
||||
for _, mb := range memberGroups { |
||||
if mb == group { |
||||
server.logger.Warnf("Inconsistency detected, %s was memberOf %s at a time when it didn't exist! (not an issue anymore)", |
||||
member, group) |
||||
return |
||||
} |
||||
} |
||||
|
||||
// Add group to memberOf
|
||||
memberGroups = append(memberGroups, group) |
||||
err = server.addElements(member, Entry{ |
||||
ATTR_MEMBEROF: memberGroups, |
||||
}) |
||||
if err != nil { |
||||
server.logger.Warnf("Could not add %s to memberOf of %s: %s", group, member, err) |
||||
} |
||||
} |
||||
|
||||
func (server *Server) memberOfRemove(member string, group string) { |
||||
// Retreive previous memberOf value
|
||||
memberOf, err := server.getAttribute(member, ATTR_MEMBEROF) |
||||
if err != nil || memberOf == nil { |
||||
server.logger.Warnf("Could not remove %s from memberOf of %s: %s", group, member, err) |
||||
return |
||||
} |
||||
|
||||
// Filter out group
|
||||
newMemberOf := []string{} |
||||
for _, mb := range memberOf { |
||||
if mb != group { |
||||
newMemberOf = append(newMemberOf, group) |
||||
} |
||||
} |
||||
|
||||
// Return early if group already not in memberOf
|
||||
if len(newMemberOf) == len(memberOf) { |
||||
server.logger.Warnf("Inconsistency detected, %s was not memberOf %s at a time when it should have been! (not an issue anymore)", |
||||
member, group) |
||||
return |
||||
} |
||||
|
||||
// Update value of memberOf
|
||||
err = server.addElements(member, Entry{ |
||||
ATTR_MEMBEROF: newMemberOf, |
||||
}) |
||||
if err != nil { |
||||
server.logger.Warnf("Could not remove %s from memberOf of %s: %s", group, member, err) |
||||
} |
||||
} |
Loading…
Reference in new issue