class ASF::Group
Access to LDAP
groups; where committer lists for PMCs have traditionally been stored. The intent is to move this data to member attributes on Project
lists.
Attributes
Date this committee was initially created in LDAP
.
Date this committee was last modified in LDAP
.
Public Class Methods
Source
# File lib/whimsy/asf/ldap.rb, line 1149 def self.[](name) group = super group.dn ? group : nil end
return group only if it actually exits
ASF::Base::[]
Source
# File lib/whimsy/asf/ldap.rb, line 1200 def self.add(name, people) nextgid = ASF.search_one(ASF::Group.base, 'cn=*', 'gidNumber'). flatten.map(&:to_i).max + 1 entry = [ mod_add('objectClass', ['posixGroup', 'top']), mod_add('cn', name), mod_add('userPassword', '{crypt}*'), mod_add('gidNumber', nextgid.to_s), mod_add('memberUid', people.map(&:id)) ] ASF::LDAP.add("cn=#{name},#{base}", entry) end
add a new group to LDAP
Source
# File lib/whimsy/asf/ldap.rb, line 1109 def self.list(filter='cn=*') ASF.search_one(base, filter, 'cn').flatten.map {|cn| find(cn)} end
obtain a list of groups from LDAP
Source
# File lib/whimsy/asf/ldap.rb, line 1114 def self.listcns(filter='cn=*') ASF.search_one(base, filter, 'cn').flatten end
return a list of groups (cns only), from LDAP
.
Source
# File lib/whimsy/asf/ldap.rb, line 1130 def self.preload Hash[ASF.search_one(base, 'cn=*', %w(dn memberUid modifyTimestamp createTimestamp)).map do |results| cn = results['dn'].first[/^cn=(.*?),/, 1] group = ASF::Group.find(cn) group.modifyTimestamp = results['modifyTimestamp'].first # it is returned as an array of 1 entry group.createTimestamp = results['createTimestamp'].first # it is returned as an array of 1 entry members = results['memberUid'] || [] group.members = members [group, members] end] end
fetch dn
, member
, modifyTimestamp
, and createTimestamp
for all groups in LDAP
.
Source
# File lib/whimsy/asf/ldap.rb, line 1216 def self.remove(name) ASF::LDAP.delete("cn=#{name},#{base}") end
remove a group from LDAP
Public Instance Methods
Source
# File lib/whimsy/asf/ldap.rb, line 1189 def add(people) # addition fails if the id is present @members = nil # force fresh LDAP search people = Array(people).map(&:id) - memberids return if people.empty? ASF::LDAP.modify(self.dn, [ASF::Base.mod_add('memberUid', people)]) ensure @members = nil end
add people to an existing group in LDAP
Source
# File lib/whimsy/asf/ldap.rb, line 1173 def dn @dn ||= ASF.search_one(base, "cn=#{name}", 'dn').first.first rescue nil end
Designated Name from LDAP
Source
# File lib/whimsy/asf/ldap.rb, line 1119 def include?(person) filter = "(&(cn=#{name})(memberUid=#{person.name}))" if ASF.search_one(base, filter, 'cn').empty? return false else return true end end
determine if a given ASF::Person
is a member of this group
Source
# File lib/whimsy/asf/ldap.rb, line 1166 def memberids weakref(:members) do # initialises @members if necessary ASF.search_one(base, "cn=#{name}", 'memberUid').flatten end end
return a list of ids who are members of this group
Source
# File lib/whimsy/asf/ldap.rb, line 1161 def members memberids.map {|uid| Person.find(uid)} end
return a list of ASF::People who are members of this group
Source
# File lib/whimsy/asf/ldap.rb, line 1156 def members=(members) @members = WeakRef.new(members) end
setter for members, should only be used by preload N.B. Do not dereference @members directly; use weakref(:members) instead
Source
# File lib/whimsy/asf/ldap.rb, line 1178 def remove(people) # Removal fails if the id is not present @members = nil # force fresh LDAP search people = Array(people).map(&:id) & memberids return if people.empty? ASF::LDAP.modify(self.dn, [ASF::Base.mod_delete('memberUid', people)]) ensure @members = nil end
remove people from an existing group in LDAP