Class: ActiveDirectory::Group

Inherits:
DirectoryObject show all
Defined in:
lib/active_directory/group.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DirectoryObject

#create, #delete, #rename, #update

Constructor Details

#initialize(options = {}) ⇒ Group

Returns a new instance of Group.



3
4
5
6
# File 'lib/active_directory/group.rb', line 3

def initialize(options={})
  super
  @object_class = ["top", "group"]
end

Class Method Details

.fieldsObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_directory/group.rb', line 33

def self.fields
  {
    cn: "common_name",
    dn: "dn",
    info: "info",
    description: "description",
    mail: "email",
    member: "member",
    sAMAccountName: "username",
    objectClass: "object_class",
    groupType: "group_type",
    objectGUID: "object_guid"
  }
end

.find_by_cn(cn, treebase = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/active_directory/group.rb', line 23

def self.find_by_cn(cn, treebase=nil)
  filter = "(&(objectClass=group)(cn=#{cn}))"
  results = Client.search(filter, self.fields.keys, treebase).first
  if results
    self.new(results)
  else
    return false, "LDAP-Error - The group with #{cn} does not exist"
  end
end

.find_by_email(email, treebase = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/active_directory/group.rb', line 8

def self.find_by_email(email, treebase=nil)
  filter = "(&(objectClass=group)(mail=#{email}))"
  results = Client.search(filter, self.fields.keys, treebase).first
  if results
    self.new(results)
  else
    return false, "LDAP-Error - The group with #{email} does not exist"
  end
end

.find_by_object_guid(object_guid, treebase = nil) ⇒ Object



18
19
20
21
# File 'lib/active_directory/group.rb', line 18

def self.find_by_object_guid(object_guid, treebase=nil)
  filter = Net::LDAP::Filter.bineq("objectGUID", object_guid)
  results = Client.search(filter, self.fields.keys, treebase).first
end

Instance Method Details

#build_create_dataObject



48
49
50
51
52
53
54
55
56
57
# File 'lib/active_directory/group.rb', line 48

def build_create_data
  data = {}
  self.class.fields.each do |k, v|
    if instance_variable_get("@#{v}")
      data[k.to_sym] = instance_variable_get("@#{v}")
    end
  end
  data.delete(:dn)
  data
end