Module: RsyncConfig::UserManagement
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #load_secrets_file(file) ⇒ Object
- #local_user_list ⇒ Object
- #local_users ⇒ Object
- #user?(identifier) ⇒ Boolean
- #users ⇒ Object
- #users=(users_list) ⇒ Object
- #write_secrets_file(secrets_file) ⇒ Object
Class Method Details
.included(base) ⇒ Object
5 6 7 |
# File 'lib/rsync_config/user_management.rb', line 5 def self.included base base.extend ClassMethods end |
Instance Method Details
#load_secrets_file(file) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/rsync_config/user_management.rb', line 66 def load_secrets_file(file) # fails silently if no parameter is found OR the file does not exist on disk return if file.nil? || !(File.exist? file) # fails is the file exists but cannot be read, since it's suspicious raise "Cannot load secrets file #{file}" unless File.readable?(file) File.open(file, 'r') do |file| self.users = self.class.parse_secrets_file(file.read) end end |
#local_user_list ⇒ Object
44 45 46 47 48 49 |
# File 'lib/rsync_config/user_management.rb', line 44 def local_user_list # we need to output only what is related to this specific node local_users.keys.map do |user| "#{user}:#{local_users[user]}" end end |
#local_users ⇒ Object
32 33 34 |
# File 'lib/rsync_config/user_management.rb', line 32 def local_users @users ||= {} end |
#user?(identifier) ⇒ Boolean
36 37 38 |
# File 'lib/rsync_config/user_management.rb', line 36 def user? identifier users.include? identifier end |
#users ⇒ Object
27 28 29 30 |
# File 'lib/rsync_config/user_management.rb', line 27 def users return @parent_config.users if @parent_config && @users.nil? local_users end |
#users=(users_list) ⇒ Object
40 41 42 |
# File 'lib/rsync_config/user_management.rb', line 40 def users= (users_list) @users = users_list if users_list.is_a?(Hash) || users_list.nil? end |
#write_secrets_file(secrets_file) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/rsync_config/user_management.rb', line 51 def write_secrets_file(secrets_file) return if secrets_file.nil? file = secrets_file.respond_to?(:output) ? secrets_file.output : secrets_file.to_s raise "Cannot write secrets file #{file}" if File.exists?(file) && ! File.writable?(file) raise "Cannot create secrets file #{file}" if !File.exist?(file) && ! ( Dir.exists?(File.dirname(file)) && File.writable?(File.dirname(file))) File.open(file, 'w') do |file| file.write local_user_list.join "\n" end file end |