Class: Superhosting::Controller::Admin
- Inherits:
-
Base
- Object
- Base
- Base
- Superhosting::Controller::Admin
show all
- Defined in:
- lib/superhosting/controller/admin.rb,
lib/superhosting/controller/admin/container.rb
Defined Under Namespace
Classes: Container
Instance Attribute Summary
Attributes inherited from Base
#config, #lib
Instance Method Summary
collapse
Methods inherited from Base
#repair
Methods inherited from Base
#get_base_controller_options, #get_controller
Methods included from Helpers
#instance_variables_to_hash
#_config, #_config_options, #_save_registry!, #apply, #configure, #configure_with_apply, #reconfig, #unapply, #unconfigure, #unconfigure_with_unapply
#_command, #_command_without_debug, #command, #command!
#chmod!, #chown!, #chown_r!, #safe_link!, #safe_unlink!
#__debug, #__dry_run, #__dry_run=, #__logger, #__logger=, #debug, #debug_block, #debug_operation, #indent, #indent=, #indent_reset, #indent_step, #indent_step_back, #info, #storage, #t, #with_dry_run, #with_indent, #with_logger
Constructor Details
#initialize(**kwargs) ⇒ Admin
Returns a new instance of Admin.
4
5
6
7
|
# File 'lib/superhosting/controller/admin.rb', line 4
def initialize(**kwargs)
super(**kwargs)
@admins_mapper = @config.admins
end
|
Instance Method Details
#add(name:, generate: false) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
|
# 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:) ⇒ Object
68
69
70
|
# File 'lib/superhosting/controller/admin.rb', line 68
def container(name:)
self.get_controller(Container, name: name)
end
|
#delete(name:) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
|
# 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:) ⇒ Object
72
73
74
|
# 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 ⇒ Object
80
81
82
|
# File 'lib/superhosting/controller/admin.rb', line 80
def index
@@index ||= self.reindex
end
|
#list ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 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:) ⇒ Object
76
77
78
|
# 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) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# 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 ⇒ Object
84
85
86
87
88
|
# 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:) ⇒ Object
90
91
92
93
94
95
96
97
98
|
# 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
|