class ActiveDirectory::User

Public Class Methods

add(dn, attrs = {}) click to toggle source
# File lib/active_directory/user.rb, line 28
def self.add(dn, attrs = {})
  #todo
end
fields() click to toggle source
# File lib/active_directory/user.rb, line 66
def self.fields
  {
    mail: "email",
    title: "title",
    sn: "last_name",
    givenName: "first_name",
    department: "department",
    employeeType: "employee_type",
    sAMAccountName: "username",
    l: "location",
    dn: "dn"
  }
end
find_by_email(email, treebase=nil) click to toggle source
# File lib/active_directory/user.rb, line 56
def self.find_by_email(email, treebase=nil)
  filter = "(&(objectCategory=person)(objectClass=user)(mail=#{email}))"
  results = Client.search(filter, self.fields.keys, treebase).first
  if results
    self.new(results)
  else
    false
  end
end
find_by_username(username, treebase=nil) click to toggle source
# File lib/active_directory/user.rb, line 46
def self.find_by_username(username, treebase=nil)
  filter = "(&(objectCategory=person)(objectClass=user)(samaccountname=#{username}))"
  results = Client.search(filter, self.fields.keys, treebase).first
  if results
    self.new(results)
  else
    false
  end
end

Public Instance Methods

add_to_group(group_dn) click to toggle source
# File lib/active_directory/user.rb, line 24
def add_to_group(group_dn)
  Client.add_attribute(group_dn, :member, @dn)
end
change_password(old_password, new_password) click to toggle source
# File lib/active_directory/user.rb, line 4
def change_password(old_password, new_password)
  result = Client.modify_unicode_pwd(
    @dn,
    Utils::microsoft_encode_password(old_password),
    Utils::microsoft_encode_password(new_password),
  )
end
groups() click to toggle source
# File lib/active_directory/user.rb, line 32
def groups
  groups = []
  filter = "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:=#{@dn}))"
  results = Client.search(filter, Group.fields.keys)
  if results
    results.each do |r|
      groups << Group.new(r)
    end
    groups
  else
    false
  end
end
password(new_password) click to toggle source
# File lib/active_directory/user.rb, line 12
def password(new_password)
  result = Client.update_attribute(
    @dn,
    'unicodePwd',
    Utils::microsoft_encode_password(new_password)
  )
end
remove_from_group(group_dn) click to toggle source
# File lib/active_directory/user.rb, line 20
def remove_from_group(group_dn)
   Client.modify(group_dn.to_s, [[:delete, :member, @dn]])
end