Class: ASF::Group
Instance Attribute Summary collapse
-
#createTimestamp ⇒ Object
Returns the value of attribute createTimestamp.
-
#modifyTimestamp ⇒ Object
Returns the value of attribute modifyTimestamp.
Attributes inherited from Base
Class Method Summary collapse
-
.add(name, people) ⇒ Object
add a new group.
- .list(filter = 'cn=*') ⇒ Object
- .preload ⇒ Object
-
.remove(name) ⇒ Object
remove a group.
Instance Method Summary collapse
-
#add(people) ⇒ Object
add people to an existing group.
- #dn ⇒ Object
- #include?(person) ⇒ Boolean
- #members ⇒ Object
- #members=(members) ⇒ Object
-
#remove(people) ⇒ Object
remove people from an existing group.
Methods inherited from Base
#<=>, [], base, #base, collection, find, #id, #initialize, mod_add, mod_delete, mod_replace, new, #reference, #weakref
Constructor Details
This class inherits a constructor from ASF::Base
Instance Attribute Details
#createTimestamp ⇒ Object
Returns the value of attribute createTimestamp.
585 586 587 |
# File 'lib/whimsy/asf/ldap.rb', line 585 def createTimestamp @createTimestamp end |
#modifyTimestamp ⇒ Object
Returns the value of attribute modifyTimestamp.
585 586 587 |
# File 'lib/whimsy/asf/ldap.rb', line 585 def modifyTimestamp @modifyTimestamp end |
Class Method Details
.add(name, people) ⇒ Object
add a new group
624 625 626 627 628 629 630 631 632 633 634 635 636 637 |
# File 'lib/whimsy/asf/ldap.rb', line 624 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 |
.list(filter = 'cn=*') ⇒ Object
560 561 562 |
# File 'lib/whimsy/asf/ldap.rb', line 560 def self.list(filter='cn=*') ASF.search_one(base, filter, 'cn').flatten.map {|cn| find(cn)} end |
.preload ⇒ Object
573 574 575 576 577 578 579 580 581 582 583 |
# File 'lib/whimsy/asf/ldap.rb', line 573 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 |
Instance Method Details
#add(people) ⇒ Object
add people to an existing group
614 615 616 617 618 619 620 621 |
# File 'lib/whimsy/asf/ldap.rb', line 614 def add(people) @members = nil people = (Array(people) - members).map(&:id) return if people.empty? ASF.ldap.modify(self.dn, [ASF::Base.mod_add('memberUid', people)]) ensure @members = nil end |
#dn ⇒ Object
599 600 601 |
# File 'lib/whimsy/asf/ldap.rb', line 599 def dn @dn ||= ASF.search_one(base, "cn=#{name}", 'dn').first.first end |
#include?(person) ⇒ Boolean
564 565 566 567 568 569 570 571 |
# File 'lib/whimsy/asf/ldap.rb', line 564 def include?(person) filter = "(&(cn=#{name})(memberUid=#{person.name}))" if ASF.search_one(base, filter, 'cn').empty? return false else return true end end |
#members ⇒ Object
591 592 593 594 595 596 597 |
# File 'lib/whimsy/asf/ldap.rb', line 591 def members members = weakref(:members) do ASF.search_one(base, "cn=#{name}", 'memberUid').flatten end members.map {|uid| Person.find(uid)} end |
#members=(members) ⇒ Object
587 588 589 |
# File 'lib/whimsy/asf/ldap.rb', line 587 def members=(members) @members = WeakRef.new(members) end |
#remove(people) ⇒ Object
remove people from an existing group
604 605 606 607 608 609 610 611 |
# File 'lib/whimsy/asf/ldap.rb', line 604 def remove(people) @members = nil people = (Array(people) & members).map(&:id) return if people.empty? ASF.ldap.modify(self.dn, [ASF::Base.mod_delete('memberUid', people)]) ensure @members = nil end |