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