class Superhosting::Controller::Admin

Public Class Methods

new(**kwargs) click to toggle source
Calls superclass method Superhosting::Base::new
# File lib/superhosting/controller/admin.rb, line 4
def initialize(**kwargs)
  super(**kwargs)
  @admins_mapper = @config.admins
end

Public Instance Methods

add(name:, generate: false) click to toggle source
# File lib/superhosting/controller/admin.rb, line 25
def add(name:, generate: false)
  if (resp = self.not_existing_validation(name: name)).net_status_ok?
    admin_dir = @admins_mapper.f(name)
    admin_dir.create!
    admin_dir.passwd.put!(name)
    self.reindex_admin(name: name)
    self.command!("chmod 640 #{admin_dir.path}")
    self.passwd(name: name, generate: generate)
  else
    resp
  end
end
container(name:) click to toggle source
# File lib/superhosting/controller/admin.rb, line 68
def container(name:)
  self.get_controller(Container, name: name)
end
delete(name:) click to toggle source
# File lib/superhosting/controller/admin.rb, line 38
def delete(name:)
  if (resp = self.existing_validation(name: name)).net_status_ok?
    admin_container_controller = self.get_controller(Admin::Container, name: name)
    if (resp = admin_container_controller._delete_all_users).net_status_ok?
      admin_dir = @admins_mapper.f(name)
      admin_dir.delete!
      self.reindex_admin(name: name)
    end
  end
  resp
end
existing_validation(name:) click to toggle source
# File lib/superhosting/controller/admin.rb, line 72
def existing_validation(name:)
  (@admins_mapper.f(name)).nil? ? { error: :logical_error, code: :admin_does_not_exists, data: { name: name } } : {}
end
index() click to toggle source
# File lib/superhosting/controller/admin.rb, line 80
def index
  @@index ||= self.reindex
end
list() click to toggle source
# File lib/superhosting/controller/admin.rb, line 9
def list
  admins = {}
  @admins_mapper.grep_dirs.map do |dir_name|
    admin_name = dir_name.name

    container_admin_controller = self.get_controller(Admin::Container, name: admin_name)
    if (resp = container_admin_controller.list).net_status_ok?
      admins[admin_name] = resp[:data]
    else
      return resp
    end
  end

  { data: admins }
end
not_existing_validation(name:) click to toggle source
# File lib/superhosting/controller/admin.rb, line 76
def not_existing_validation(name:)
  self.existing_validation(name: name).net_status_ok? ? { error: :logical_error, code: :admin_exists, data: { name: name } } : {}
end
passwd(name:, generate: false) click to toggle source
# File lib/superhosting/controller/admin.rb, line 50
def passwd(name:, generate: false)
  if (resp = self.existing_validation(name: name)).net_status_ok?
    user_controller = self.get_controller(User)
    admin_dir = @admins_mapper.f(name)
    passwords = user_controller._create_password(generate: generate)
    admin_dir.passwd.put!("#{name}:#{passwords[:encrypted_password]}")

    users = self.index[name]
    users.each do |user_name|
      user_controller._update_password(name: user_name, encrypted_password: passwords[:encrypted_password])
    end

    generate ? { data: passwords[:password] } : {}
  else
    resp
  end
end
reindex() click to toggle source
# File lib/superhosting/controller/admin.rb, line 84
def reindex
  @@index = {}
  @admins_mapper.grep_dirs.each {|dir_name| self.reindex_admin(name: dir_name.name) }
  @@index
end
reindex_admin(name:) click to toggle source
# File lib/superhosting/controller/admin.rb, line 90
def reindex_admin(name:)
  @@index ||= {}
  if @admins_mapper.f(name).nil?
    @@index.delete(name)
  else
    admin_container_controller = self.get_controller(Admin::Container, name: name)
    @@index[name] = admin_container_controller._users_list.net_status_ok![:data] || []
  end
end