module ActiveSambaLdap::AccountEntry
Constants
- NAME_RE_SRC
Public Class Methods
included(base)
click to toggle source
Calls superclass method
# File lib/active_samba_ldap/account_entry.rb, line 11 def self.included(base) super base.extend(ClassMethods) end
Public Instance Methods
change_password(password)
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 135 def change_password(password) hash_type = self.class.configuration[:password_hash_type] hashed_password = ActiveLdap::UserPassword.__send__(hash_type, password) self.user_password = hashed_password end
change_uid_number(uid, allow_non_unique=false)
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 130 def change_uid_number(uid, allow_non_unique=false) check_unique_uid_number(uid) unless allow_non_unique self.uid_number = Integer(uid) end
destroy(options={})
click to toggle source
Calls superclass method
# File lib/active_samba_ldap/account_entry.rb, line 110 def destroy(options={}) if options[:removed_from_group] groups.each do |group| remove_from_group(group) end end dir = home_directory need_remove_home_directory = options[:remove_home_directory] && !new_entry? super() if need_remove_home_directory and File.directory?(dir) if options[:remove_home_directory_interactive] system("rm", "-r", "-i", dir) else FileUtils.rm_r(dir) end end new_entry? end
fill_default_values(options={})
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 87 def fill_default_values(options={}) self.cn ||= uid self.sn ||= uid self.given_name ||= uid self.display_name ||= cn self.gecos ||= substituted_value(:user_gecos) {cn} self.home_directory ||= substituted_value(:user_home_directory) self.login_shell ||= self.class.configuration[:user_login_shell] options = options.stringify_keys password = options["password"] change_password(password) if password self.user_password ||= "{crypt}x" uid_number = options["uid_number"] self.change_uid_number(uid_number) if uid_number primary_group = options["group"] || retrieve_default_primary_group(options) self.primary_group = primary_group if primary_group self end
setup_home_directory(options={})
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 141 def setup_home_directory(options={}) dest = home_directory return unless dest FileUtils.mkdir_p(dest) mode = options[:mode] mode ||= self.class.configuration[:user_home_directory_mode] FileUtils.chmod(Integer(mode), dest) skel = options[:skeleton_directory] skel ||= self.class.configuration[:skeleton_directory] FileUtils.cp_r(Dir.glob(File.join(skel, ".*")) + Dir.glob(File.join(skel, "*")) - [File.join(skel, "."), File.join(skel, "..")], dest) FileUtils.chown_R(uid_number.to_s, gid_number.to_s, dest) end
Private Instance Methods
check_unique_uid_number(uid_number)
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 159 def check_unique_uid_number(uid_number) ActiveSambaLdap::Base.restart_nscd do if self.class.find_by_uid_number(uid_number) raise UidNumberAlreadyExists.new(uid_number) end end end
created_group_name()
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 185 def created_group_name uid end
retrieve_default_primary_group(options={})
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 189 def retrieve_default_primary_group(options={}) group = nil gid_number = options["gid_number"] group_class = options["group_class"] group_class ||= self.class.associated_class(:primary_group) unless gid_number if options["create_group"] group_name = created_group_name if group_class.exists?(group_name) group = group_class.find(group_name) else group = group_class.create(:cn => group_name, :pool => options["pool"], :pool_class => options["pool_class"]) end else gid_number = default_gid_number end end if gid_number group = group_class.find_by_gid_number(gid_number) end group end
substitute_template(template)
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 167 def substitute_template(template) template.gsub(/%U/, uid) end
substituted_value(key) { || ... }
click to toggle source
# File lib/active_samba_ldap/account_entry.rb, line 171 def substituted_value(key) config = self.class.configuration if block_given? value = config[key.to_sym] if value substitute_template(value) else yield end else substitute_template(config[key.to_sym]) end end