diff --git a/app/controllers/store_api_controller.rb b/app/controllers/store_api_controller.rb index a5c5d81..d35c175 100644 --- a/app/controllers/store_api_controller.rb +++ b/app/controllers/store_api_controller.rb @@ -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` } diff --git a/app/helpers/orbit_backend_helper.rb b/app/helpers/orbit_backend_helper.rb index 73734d2..25eb17a 100644 --- a/app/helpers/orbit_backend_helper.rb +++ b/app/helpers/orbit_backend_helper.rb @@ -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" diff --git a/app/models/module_app.rb b/app/models/module_app.rb index cd1d4a1..efee743 100644 --- a/app/models/module_app.rb +++ b/app/models/module_app.rb @@ -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 diff --git a/app/models/orbit_store.rb b/app/models/orbit_store.rb index 9c9b64f..1217dc2 100644 --- a/app/models/orbit_store.rb +++ b/app/models/orbit_store.rb @@ -1,3 +1,4 @@ class OrbitStore URL = "http://store.tp.rulingcom.com" + MODULE_EXCEPTIONS = ["category","tag","authorization"] end \ No newline at end of file diff --git a/app/views/store_api/render_license_denied.html.erb b/app/views/store_api/render_license_denied.html.erb new file mode 100644 index 0000000..702732d --- /dev/null +++ b/app/views/store_api/render_license_denied.html.erb @@ -0,0 +1,2 @@ +
Please contact www.rulingdigital.com.
\ No newline at end of file diff --git a/config/environment.rb b/config/environment.rb index a176bdd..437818a 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -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 diff --git a/config/routes.rb b/config/routes.rb index 8d95df9..266d912 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/lib/orbit_app/helper/side_bar_renderer.rb b/lib/orbit_app/helper/side_bar_renderer.rb index e4fe6a9..ed4fecd 100644 --- a/lib/orbit_app/helper/side_bar_renderer.rb +++ b/lib/orbit_app/helper/side_bar_renderer.rb @@ -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 diff --git a/lib/orbit_app/register_module.rb b/lib/orbit_app/register_module.rb index 44797d7..ad019fd 100644 --- a/lib/orbit_app/register_module.rb +++ b/lib/orbit_app/register_module.rb @@ -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 \ No newline at end of file diff --git a/lib/orbit_core_lib.rb b/lib/orbit_core_lib.rb index 6b46264..53e9d1b 100644 --- a/lib/orbit_core_lib.rb +++ b/lib/orbit_core_lib.rb @@ -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" diff --git a/lib/tasks/register_with_store.rake b/lib/tasks/register_with_store.rake new file mode 100644 index 0000000..9e76058 --- /dev/null +++ b/lib/tasks/register_with_store.rake @@ -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 \ No newline at end of file