Class: ASF::Group

Inherits:
Base
  • Object
show all
Defined in:
lib/whimsy/asf/ldap.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

[], #base, base, collection, find, #id, #initialize, new, #reference, #weakref

Constructor Details

This class inherits a constructor from ASF::Base

Instance Attribute Details

#createTimestampObject

Returns the value of attribute createTimestamp.



428
429
430
# File 'lib/whimsy/asf/ldap.rb', line 428

def createTimestamp
  @createTimestamp
end

#modifyTimestampObject

Returns the value of attribute modifyTimestamp.



428
429
430
# File 'lib/whimsy/asf/ldap.rb', line 428

def modifyTimestamp
  @modifyTimestamp
end

Class Method Details

.list(filter = 'cn=*') ⇒ Object



403
404
405
# File 'lib/whimsy/asf/ldap.rb', line 403

def self.list(filter='cn=*')
  ASF.search_one(base, filter, 'cn').flatten.map {|cn| find(cn)}
end

.preloadObject



416
417
418
419
420
421
422
423
424
425
426
# File 'lib/whimsy/asf/ldap.rb', line 416

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



453
454
455
456
457
458
# File 'lib/whimsy/asf/ldap.rb', line 453

def add(people)
  people = Array(people).map(&:dn)
  mod = ::LDAP::Mod.new(::LDAP::LDAP_MOD_ADD, 'memberUid', people)
  ASF.ldap.modify(self.dn, [mod])
  @members = nil
end

#dnObject



442
443
444
# File 'lib/whimsy/asf/ldap.rb', line 442

def dn
  @dn ||= ASF.search_one(base, "cn=#{name}", 'dn').first.first
end

#include?(person) ⇒ Boolean

Returns:

  • (Boolean)


407
408
409
410
411
412
413
414
# File 'lib/whimsy/asf/ldap.rb', line 407

def include?(person)
  filter = "(&(cn=#{name})(memberUid=#{person.name}))"
  if ASF.search_one(base, filter, 'cn').empty?
    return false
  else
    return true
  end
end

#membersObject



434
435
436
437
438
439
440
# File 'lib/whimsy/asf/ldap.rb', line 434

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



430
431
432
# File 'lib/whimsy/asf/ldap.rb', line 430

def members=(members)
  @members = WeakRef.new(members)
end

#remove(people) ⇒ Object



446
447
448
449
450
451
# File 'lib/whimsy/asf/ldap.rb', line 446

def remove(people)
  people = Array(people).map(&:id)
  mod = ::LDAP::Mod.new(::LDAP::LDAP_MOD_DELETE, 'memberUid', people)
  ASF.ldap.modify(self.dn, [mod])
  @members = nil
end