Class: OpenDirectory::User

Inherits:
Object
  • Object
show all
Defined in:
lib/open_directory/user.rb

Class Method Summary collapse

Class Method Details

.active?(username) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
67
# File 'lib/open_directory/user.rb', line 64

def self.active?(username)
    record = read(username, ["AuthenticationAuthority"])
    !record["dsAttrTypeStandard:AuthenticationAuthority"].include? ";DisabledUser;"
end

.allObject



3
4
5
6
# File 'lib/open_directory/user.rb', line 3

def self.all
    Dscl.generate("list","/Users")
    Dscl.run
end

.auth(username, password) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/open_directory/user.rb', line 22

def self.auth(username, password)
    params = [password]
    Dscl.generate("authonly", username, params)
    output = Dscl.run
    if output.empty?
        true
    else
      #!output[0].include?("eDSAuthFailed")
      false
    end
end

.base_script(username, password = nil, params = []) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/open_directory/user.rb', line 34

def self.base_script(username, password=nil, params=[])
    Dscl.generate("passwd", "/Users/#{username}", ["'#{password}'"]) unless password.nil?
    params.each do |key, value|
        if key == :Keywords
            value.each do |keyword|
                Dscl.generate("append", "/Users/#{username}", [key, "'#{keyword}'"])
            end
        else
            Dscl.generate("create", "/Users/#{username}", [key, "'#{value}'"])
        end
    end
end

.create(username, password, params = []) ⇒ Object



52
53
54
55
56
57
# File 'lib/open_directory/user.rb', line 52

def self.create(username, password, params=[])
  Dscl.generate("create", "/Users/#{username}")
  Dscl.generate("passwd", "/Users/#{username}", ["'#{password}'"])
  base_script(username, password, params)
  Dscl.run
end

.delete(username) ⇒ Object



59
60
61
62
# File 'lib/open_directory/user.rb', line 59

def self.delete(username)
    Dscl.generate("delete", "/Users/#{username}")
    Dscl.run
end

.disable(username) ⇒ Object



69
70
71
72
73
# File 'lib/open_directory/user.rb', line 69

def self.disable(username)
    params = %w(AuthenticationAuthority ';DisabledUser;')
    Dscl.generate("append", "/Users/#{username}", params)
    Dscl.run
end

.enable(username) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/open_directory/user.rb', line 75

def self.enable(username)
    response = read(username, ["AuthenticationAuthority"])
    response["dsAttrTypeStandard:AuthenticationAuthority"].delete(";DisabledUser;")
    params = ["dsAttrTypeStandard:AuthenticationAuthority", "'" + response["dsAttrTypeStandard:AuthenticationAuthority"].join(" ") + "'"]
    Dscl.generate("create", "/Users/#{username}", params)
    Dscl.run
end

.exists?(username) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
11
# File 'lib/open_directory/user.rb', line 8

def self.exists?(username)
    users = all
    users.include?(username)
end

.read(username, params = "") ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/open_directory/user.rb', line 13

def self.read(username, params="")
    if exists?(username)
        Dscl.generate("read", "/Users/#{username}",params)
        Dscl.run
    else
        false
    end
end

.reset_credentials(username, password) ⇒ Object



83
84
85
86
# File 'lib/open_directory/user.rb', line 83

def self.reset_credentials(username, password)
  Dscl.generate("passwd", "/Users/#{username}", ["'#{password}'"])
  Dscl.run
end

.update(username, password = nil, params = []) ⇒ Object



47
48
49
50
# File 'lib/open_directory/user.rb', line 47

def self.update(username, password=nil, params=[])
  base_script(username, password, params)
  Dscl.run
end