module store changes

This commit is contained in:
Harry Bomrah 2014-12-30 18:38:11 +08:00
parent c8d395aca1
commit 6e27bbd483
11 changed files with 110 additions and 14 deletions

View File

@ -43,6 +43,10 @@ class StoreApiController < ApplicationController
render :json => {"success" => true}.to_json
end
def render_license_denied
render :layout => "back_end"
end
private
def bundle_install
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=downloaded_extensions.rb bundle update && bundle` }

View File

@ -172,8 +172,15 @@ module OrbitBackendHelper
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)
response = http.request(request) rescue nil
if response.nil?
data = {}
data["message"] = "Could not connect to the store."
data["error"] = "CONNECTION_REFUSED"
data["success"] = false
else
data = JSON.parse(response.body)
end
if !data["success"]
case data["error"]
when "INVALID_SITE_TOKEN"

View File

@ -14,6 +14,7 @@ class ModuleApp
field :widget_methods
field :desktop_enabled, type: Boolean, default: false
field :widget_settings
field :store_permission_granted, type: Boolean, default: false
has_many :categories, dependent: :destroy, :autosave => true
has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true

View File

@ -1,3 +1,4 @@
class OrbitStore
URL = "http://store.tp.rulingcom.com"
MODULE_EXCEPTIONS = ["category","tag","authorization"]
end

View File

@ -0,0 +1,2 @@
<h3>License Denied.</h3>
<p>Please contact <a href="http://www.rulingdigital.com">www.rulingdigital.com</a>.</p>

View File

@ -5,6 +5,7 @@ require File.expand_path('../application', __FILE__)
Orbit::Application.initialize!
Orbit::Application.config.secret_key_base = 'acc6ffc5a7d360c9cf2a7bdb4ddf9a897942ec6767413a5c0324a0fa8b86197a96298288a66bd46d8770d8b6edf509aad65716961c2c364ce006b475e6cfd418'
OrbitApp.cleanup_modules
OrbitApp.check_module_permissions
if Site.count == 0
site = Site.new

View File

@ -16,6 +16,7 @@ Orbit::Application.routes.draw do
get "/page_parts/getwidgets" => "page_parts#getwidgets"
get "/page_parts/info" => "page_parts#info"
get "/page_parts/edit_sub_part" => "page_parts#edit_sub_part"
get "/admin/license_denied" => "store_api#render_license_denied"
resources :pages
resources :page_parts do
@ -95,7 +96,7 @@ Orbit::Application.routes.draw do
get "members/get_role_fields/:id" => "members#get_role_fields", :as => :get_role_fields
get "members/import_members" => "members#import_members"
get "members/unapproved_members" => "members#unapproved_members"
get "members/unapproved_members" => "members#unapproved_members"
resources :members do
collection do
@ -197,7 +198,7 @@ Orbit::Application.routes.draw do
get 'check_updates'
get 'update_orbit'
get 'restart_server'
get 'delete_mail_log'
get 'delete_mail_log'
end
resources :designs do

View File

@ -13,12 +13,14 @@ module SideBarRenderer
@app_available_for = af
if display?
content_tag :div, class: "sub-nav-block #{@icon_class}" do
concat content_tag :h4, I18n.t(@head_label)
concat (content_tag :ul, class: "nav nav-list" do
@context_links.sort_by {| obj | obj.priority}.map{ |link|
link.render(request, params, @current_module_app, @current_user, @belong_module_app, link.get_active_action, link.available_for)
}.join.html_safe
end)
if @belong_module_app.store_permission_granted
concat content_tag :h4, I18n.t(@head_label)
concat (content_tag :ul, class: "nav nav-list" do
@context_links.sort_by {| obj | obj.priority}.map{ |link|
link.render(request, params, @current_module_app, @current_user, @belong_module_app, link.get_active_action, link.available_for)
}.join.html_safe
end)
end
end
end
end
@ -33,9 +35,17 @@ module SideBarRenderer
@app_available_for = available_for
if display?
content_tag :li, class: (module_sidebar_active? ? 'active' : nil) do
link_to Rails.application.routes.url_helpers.send(@head_link) do
content_tag :span do
content_tag(:i, nil, class: @icon_class)
if @belong_module_app.store_permission_granted
link_to Rails.application.routes.url_helpers.send(@head_link) do
content_tag :span do
content_tag(:i, nil, class: @icon_class)
end
end
else
link_to "/admin/license_denied" do
content_tag :span do
content_tag(:i, nil, class: @icon_class + " text-error")
end
end
end
end

View File

@ -20,5 +20,46 @@ module OrbitApp
end
end
end
def check_module_permissions
store_token = Site.first.store_token
module_apps = ModuleApp.all
exceptions = OrbitStore::MODULE_EXCEPTIONS
if !store_token.nil?
ids = []
module_index = {}
module_apps.each do |ma|
ids << ma.key
module_index[ma.key] = ma
end
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/check_module_permissions")
request.body = params_to_send.to_query
response = http.request(request) rescue nil
if !response.nil?
data = JSON.parse(response.body)
if response.code == "200"
permissions = data["permissions"]
permissions.each do |permission|
ma = module_index[permission["app"]]
ma.store_permission_granted = (exceptions.include?(ma.key) ? true : permission["granted"])
ma.save
end
end
else
module_apps.each do |ma|
ma.store_permission_granted = (exceptions.include?(ma.key) ? true : false)
ma.save
end
end
else
module_apps.each do |ma|
ma.store_permission_granted = (exceptions.include?(ma.key) ? true : false)
ma.save
end
end
end
end
end

View File

@ -62,7 +62,11 @@ module OrbitCoreLib
return
end
if !@module_app.nil?
check_user_can_use
if @module_app.store_permission_granted || params["controller"] == "admin/authorizations"
check_user_can_use
else
redirect_to admin_license_denied_path
end
else
if current_user.nil? || !current_user.is_admin?
if params["controller"] != "admin/assets"

View File

@ -0,0 +1,24 @@
namespace :register_with_store do
task :register,[:arg] => :environment do |task,args|
modules = ModuleApp.all
ids = modules.collect{|ma| ma.key}
store_token = Site.first.store_token
module_apps = ModuleApp.all
exceptions = OrbitStore::MODULE_EXCEPTIONS
if !store_token.nil?
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?
puts "Cannot connect to store."
else
puts "All modules registered."
end
else
puts "Cannot register modules, site is not registered with store."
end
end
end