Class: Puppet::Util::ADSI::User
- Extended by:
- Enumerable
- Defined in:
- lib/vendor/puppet/util/adsi.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#native_user ⇒ Object
Returns the value of attribute native_user.
Class Method Summary collapse
- .create(name) ⇒ Object
- .delete(name) ⇒ Object
- .each(&block) ⇒ Object
- .exists?(name) ⇒ Boolean
- .logon(name, password) ⇒ Object
- .uri(name) ⇒ Object
Instance Method Summary collapse
- #[](attribute) ⇒ Object
- #[]=(attribute, value) ⇒ Object
- #add_flag(flag_name, value) ⇒ Object
- #add_to_groups(*group_names) ⇒ Object (also: #add_to_group)
- #commit ⇒ Object
- #groups ⇒ Object
-
#initialize(name, native_user = nil) ⇒ User
constructor
A new instance of User.
- #password=(password) ⇒ Object
- #password_is?(password) ⇒ Boolean
- #remove_from_groups(*group_names) ⇒ Object (also: #remove_from_group)
- #set_groups(desired_groups, minimum = true) ⇒ Object
- #uri ⇒ Object
Constructor Details
#initialize(name, native_user = nil) ⇒ User
Returns a new instance of User.
68 69 70 71 |
# File 'lib/vendor/puppet/util/adsi.rb', line 68 def initialize(name, native_user = nil) @name = name @native_user = native_user end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
67 68 69 |
# File 'lib/vendor/puppet/util/adsi.rb', line 67 def name @name end |
#native_user ⇒ Object
Returns the value of attribute native_user.
66 67 68 |
# File 'lib/vendor/puppet/util/adsi.rb', line 66 def native_user @native_user end |
Class Method Details
.create(name) ⇒ Object
163 164 165 166 167 |
# File 'lib/vendor/puppet/util/adsi.rb', line 163 def self.create(name) # Windows error 1379: The specified local group already exists. raise Puppet::Error.new( "Cannot create user if group '#{name}' exists." ) if Puppet::Util::ADSI::Group.exists? name new(name, Puppet::Util::ADSI.create(name, 'user')) end |
.delete(name) ⇒ Object
173 174 175 |
# File 'lib/vendor/puppet/util/adsi.rb', line 173 def self.delete(name) Puppet::Util::ADSI.delete(name, 'user') end |
.each(&block) ⇒ Object
177 178 179 180 181 182 183 184 185 186 |
# File 'lib/vendor/puppet/util/adsi.rb', line 177 def self.each(&block) wql = Puppet::Util::ADSI.execquery("select * from win32_useraccount") users = [] wql.each do |u| users << new(u.name, u) end users.each(&block) end |
.exists?(name) ⇒ Boolean
169 170 171 |
# File 'lib/vendor/puppet/util/adsi.rb', line 169 def self.exists?(name) Puppet::Util::ADSI::connectable?(User.uri(name)) end |
Instance Method Details
#[](attribute) ⇒ Object
89 90 91 |
# File 'lib/vendor/puppet/util/adsi.rb', line 89 def [](attribute) native_user.Get(attribute) end |
#[]=(attribute, value) ⇒ Object
93 94 95 |
# File 'lib/vendor/puppet/util/adsi.rb', line 93 def []=(attribute, value) native_user.Put(attribute, value) end |
#add_flag(flag_name, value) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/vendor/puppet/util/adsi.rb', line 110 def add_flag(flag_name, value) flag = native_user.Get(flag_name) rescue 0 native_user.Put(flag_name, flag | value) commit end |
#add_to_groups(*group_names) ⇒ Object Also known as: add_to_group
132 133 134 135 136 |
# File 'lib/vendor/puppet/util/adsi.rb', line 132 def add_to_groups(*group_names) group_names.each do |group_name| Puppet::Util::ADSI::Group.new(group_name).add_member(@name) end end |
#commit ⇒ Object
97 98 99 100 101 102 103 104 |
# File 'lib/vendor/puppet/util/adsi.rb', line 97 def commit begin native_user.SetInfo unless native_user.nil? rescue Exception => e raise Puppet::Error.new( "User update failed: #{e}" ) end self end |
#groups ⇒ Object
125 126 127 128 129 130 |
# File 'lib/vendor/puppet/util/adsi.rb', line 125 def groups # WIN32OLE objects aren't enumerable, so no map groups = [] native_user.Groups.each {|g| groups << g.Name} rescue nil groups end |
#password=(password) ⇒ Object
118 119 120 121 122 123 |
# File 'lib/vendor/puppet/util/adsi.rb', line 118 def password=(password) native_user.SetPassword(password) commit fADS_UF_DONT_EXPIRE_PASSWD = 0x10000 add_flag("UserFlags", fADS_UF_DONT_EXPIRE_PASSWD) end |
#password_is?(password) ⇒ Boolean
106 107 108 |
# File 'lib/vendor/puppet/util/adsi.rb', line 106 def password_is?(password) self.class.logon(name, password) end |
#remove_from_groups(*group_names) ⇒ Object Also known as: remove_from_group
139 140 141 142 143 |
# File 'lib/vendor/puppet/util/adsi.rb', line 139 def remove_from_groups(*group_names) group_names.each do |group_name| Puppet::Util::ADSI::Group.new(group_name).remove_member(@name) end end |
#set_groups(desired_groups, minimum = true) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/vendor/puppet/util/adsi.rb', line 146 def set_groups(desired_groups, minimum = true) return if desired_groups.nil? or desired_groups.empty? desired_groups = desired_groups.split(',').map(&:strip) current_groups = self.groups # First we add the user to all the groups it should be in but isn't groups_to_add = desired_groups - current_groups add_to_groups(*groups_to_add) # Then we remove the user from all groups it is in but shouldn't be, if # that's been requested groups_to_remove = current_groups - desired_groups remove_from_groups(*groups_to_remove) unless minimum end |
#uri ⇒ Object
81 82 83 |
# File 'lib/vendor/puppet/util/adsi.rb', line 81 def uri self.class.uri(name) end |