diff --git a/app/controllers/admin/site_panel_controller.rb b/app/controllers/admin/site_panel_controller.rb
index 219a488..d535dde 100644
--- a/app/controllers/admin/site_panel_controller.rb
+++ b/app/controllers/admin/site_panel_controller.rb
@@ -278,11 +278,11 @@ class Admin::SitePanelController < OrbitAdminController
end
elsif params[:type] == 'close'
Thread.new do
- system("bundle exec rake exec_commands:exec_commands[#{params[:id]},,close_site]")
+ Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id,:commands,:type], [params[:id], '', 'close_site']))
end
elsif params[:type] == 'open' || params[:type] == 'restart'
Thread.new do
- system("bundle exec rake exec_commands:exec_commands[#{params[:id]},,open_site,,#{params[:env]}]")
+ Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id,:commands,:type,:server_name,:rails_env], [params[:id], '', 'open_site', '', params[:env]]))
end
elsif params[:type] == 'detail'
@site_construct = SiteConstruct.find(params[:id])
@@ -333,10 +333,15 @@ class Admin::SitePanelController < OrbitAdminController
end
else
Thread.new do
+ cmds = params[:commands].split('////')
+ if cmds.include?('{{create_super_manager}}') && !params[:account].blank? && !params[:password].blank?
+ idx = cmds.index('{{create_super_manager}}')
+ cmds[idx] = create_super_manager_cmd(params[:account],params[:password])
+ end
if params[:id].blank? && !params[:server_names].blank?
- Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:commands, :type, :server_name], [params[:commands], 'exec_all', params[:server_names].join('////')]))
+ Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:commands, :type, :server_name], [cmds.join('////'), 'exec_all', params[:server_names].join('////')]))
else
- Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id, :commands, :type], [params[:id], params[:commands], 'exec_commands']))
+ Rake::Task['exec_commands:exec_commands'].execute(Rake::TaskArguments.new([:site_construct_id, :commands, :type], [params[:id], cmds.join('////'), 'exec_commands']))
end
end
end
@@ -412,4 +417,44 @@ class Admin::SitePanelController < OrbitAdminController
site_params = params.require(:site_construct).permit!
site_params.except(:domain_name,:port)
end
+ def create_super_manager_cmd(user_name, password)
+ user = User.new(id: nil, user_name: user_name, password: password, beta_tester: true, approved: true)
+ member_profile = user.build_member_profile(id: nil)
+ user_attrs = user.attributes
+ user_attrs.delete('_id')
+ user_attrs.delete('member_profile_id')
+ member_profile.send(:generate_uid)
+ member_attrs = member_profile.attributes
+ member_attrs.delete('_id')
+ cmd = """mongo --eval 'a=function(){
+ var user_query = {user_name: \"#{user_attrs['user_name']}\"};
+ var user = db.users.findOne(user_query);
+ var user_id;
+ var user_data = #{user_attrs.to_json};
+ var time = new Date();
+ user_data.created_at = time;
+ user_data.updated_at = time;
+ user_data.password_updated_at = time;
+ if (user){
+ user_data._id = user._id;
+ db.users.update(user_query, {$set: user_data});
+ }else{
+ db.users.insertOne(user_data);
+ }
+ user = db.users.findOne(user_query);
+ var member_query = {_id: user.member_profile_id};
+ var member = user.member_profile_id ? db.member_profiles.findOne(member_query) : null;
+ var member_data = #{member_attrs.to_json};
+ member_data.created_at = time;
+ member_data.updated_at = time;
+ if (member){
+ member_data._id = member._id;
+ member = db.member_profiles.update(member_query, {$set: member_data});
+ }else{
+ member = db.member_profiles.insertOne(member_data);
+ user_data.member_profile_id = member.insertedId;
+ db.users.update(user_query, {$set: user_data});
+ }
+ }()' {{db_name}}""".gsub(/\n|^ */,"")
+ end
end
\ No newline at end of file
diff --git a/app/views/admin/site_panel/_get_commands_list.html.erb b/app/views/admin/site_panel/_get_commands_list.html.erb
index 913477f..9793e00 100644
--- a/app/views/admin/site_panel/_get_commands_list.html.erb
+++ b/app/views/admin/site_panel/_get_commands_list.html.erb
@@ -9,4 +9,5 @@
@command_relations["start_site_in_env\\,#{env}"] = "kill -s TERM `fuser tmp/pids/unicorn.sock tmp/sockets/unicorn.sock tmp/unicorn.sock` && bundle exec unicorn_rails -c config/unicorn.rb -D -E #{env}"
@command_trans["start_site_in_env\\,#{env}"] = I18n.t("client_management.start_site_in_env",{:env=>env})
end
+ @command_trans['create_super_manager'] = I18n.t("client_management.create_super_manager")
%>
\ No newline at end of file
diff --git a/app/views/admin/site_panel/_server_manager_index.html.erb b/app/views/admin/site_panel/_server_manager_index.html.erb
index c7afee0..a153424 100644
--- a/app/views/admin/site_panel/_server_manager_index.html.erb
+++ b/app/views/admin/site_panel/_server_manager_index.html.erb
@@ -80,6 +80,13 @@
Exec commands