orbit4-5/app/controllers/admin/store_controller.rb

101 lines
3.0 KiB
Ruby

require "uri"
require "net/http"
class Admin::StoreController < OrbitAdminController
layout false
before_action :store_url
def check_credentials
if current_site.store_token.nil?
render :json => {"success" => false}.to_json
else
render :json => {"success" => true}.to_json
end
end
def register_form
tt = current_site.title_translations
@site_title_values = {}
@site_title_values["en"] = tt["en"]
@site_title_values["zh_tw"] = tt["zh_tw"]
end
def template_store
end
def app_store
end
def send_email
params_to_send = {'store_token' => current_site.store_token}
uri = URI.parse(@store_url)
http = Net::HTTP.new(uri.host,uri.port)
request = Net::HTTP::Get.new("/site/send_email")
request.body = params_to_send.to_query
response = http.request(request)
data = JSON.parse(response.body)
render :json => data.to_json
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
sleep 5
end
def authorize_default_modules
modules = ModuleApp.all
ids = modules.collect{|ma| ma.key}
store_token = Site.first.store_token rescue nil
if !store_token.nil?
module_apps = ModuleApp.all
params_to_send = {'store_token' => store_token, "apps" => ids}
uri = URI.parse(OrbitStore::URL)
http = Net::HTTP.new(uri.host,uri.port)
request = Net::HTTP::Post.new("/store/register_old_sites_modules")
request.body = params_to_send.to_query
response = http.request(request) rescue nil
if response.nil?
render :json => {"success" => false, "message" => "Could not connect to the store."}.to_json
else
data = JSON.parse(response.body)
if data["success"]
render :json => {"success" => true}.to_json
elsif !data["success"]
render :json => {"success" => false, "message" => data["message"]}.to_json
end
end
else
render :json => {"success" => false, "message" => "Cannot register modules, site is not registered with store."}.to_json
end
end
def check_permissions
params_to_send = {'store_token' => current_site.store_token}
uri = URI.parse(@store_url)
http = Net::HTTP.new(uri.host,uri.port)
request = Net::HTTP::Get.new("/site/permissions")
request.body = params_to_send.to_query
response = http.request(request)
data = JSON.parse(response.body)
if !data["success"] && data["error"] == "INVALID_SITE_TOKEN"
current_site.store_token = nil
current_site.save
end
render :json => data.to_json
end
def register_site
params_to_send = {'site_domain' => request.host_with_port, 'admin_email' => params["email"], "site_token" => current_site.uid, "site_title" => params[:site_title] }
uri = URI.parse(@store_url)
http = Net::HTTP.new(uri.host,uri.port)
request = Net::HTTP::Post.new("/register/site")
request.body = params_to_send.to_query
response = http.request(request)
data = JSON.parse(response.body)
render :json => data.to_json
end
private
def store_url
@store_url = OrbitStore::URL
# @store_url = "http://localhost:3000"
end
end