diff --git a/app/controllers/admin/sites_controller.rb b/app/controllers/admin/sites_controller.rb index f418a82..a926b6d 100644 --- a/app/controllers/admin/sites_controller.rb +++ b/app/controllers/admin/sites_controller.rb @@ -55,9 +55,6 @@ class Admin::SitesController < OrbitAdminController def preference end - def update_manager - end - def update_orbit end @@ -80,6 +77,7 @@ class Admin::SitesController < OrbitAdminController end def update_manager + @store_permissions = check_store_permissions end def get_update_history @@ -94,21 +92,26 @@ class Admin::SitesController < OrbitAdminController end def update_orbit - result = "" - need_stash = %x(git diff).blank? - %x(git stash) unless need_stash - %x(git fetch origin) - pull_result = %x(git pull -r --ff-only 2>&1 origin #{@branch}) - %x(git stash pop) unless need_stash + store_permissions = check_store_permissions + if store_permissions["permission_granted"] + result = "" + need_stash = %x(git diff).blank? + %x(git stash) unless need_stash + %x(git fetch origin) + pull_result = %x(git pull -r --ff-only 2>&1 origin #{@branch}) + %x(git stash pop) unless need_stash - if pull_result.include? "fatal: Not possible to fast-forward, aborting." - result = "failed" + if pull_result.include? "fatal: Not possible to fast-forward, aborting." + result = "failed" + else + result = "success" + Bundler.with_clean_env { `cd #{Rails.root} && bundle install` } + end + + render :text => result else - result = "success" - Bundler.with_clean_env { `cd #{Rails.root} && bundle install` } + render :json => store_permissions.to_json end - - render :text => result end def restart_server diff --git a/app/controllers/admin/store_controller.rb b/app/controllers/admin/store_controller.rb index c98c930..7370309 100644 --- a/app/controllers/admin/store_controller.rb +++ b/app/controllers/admin/store_controller.rb @@ -63,7 +63,7 @@ class Admin::StoreController < OrbitAdminController private def store_url - @store_url = "http://store.tp.rulingcom.com" + @store_url = OrbitStore::URL # @store_url = "http://localhost:3000" end end \ No newline at end of file diff --git a/app/controllers/orbit_admin_controller.rb b/app/controllers/orbit_admin_controller.rb index d084ef3..5e9aaac 100644 --- a/app/controllers/orbit_admin_controller.rb +++ b/app/controllers/orbit_admin_controller.rb @@ -81,5 +81,4 @@ class OrbitAdminController < ApplicationController @current_user_is_sub_manager = current_user.is_sub_manager?(@module_app) rescue false end - end diff --git a/app/helpers/orbit_backend_helper.rb b/app/helpers/orbit_backend_helper.rb index e0f1901..7af6d98 100644 --- a/app/helpers/orbit_backend_helper.rb +++ b/app/helpers/orbit_backend_helper.rb @@ -1,3 +1,5 @@ +require "uri" +require "net/http" module OrbitBackendHelper def self.included(base) @@ -152,6 +154,37 @@ module OrbitBackendHelper @user_has_privileges end + def check_store_permissions #checks with the store if it has proper access and rights to access store + store_permission = {} + store_token = current_site.store_token rescue nil + if !store_token.nil? + params_to_send = {'store_token' => current_site.store_token} + uri = URI.parse(OrbitStore::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"] + case data["error"] + when "INVALID_SITE_TOKEN" + current_site.store_token = nil + current_site.save + end + store_permission["permission_granted"] = false + store_permission["error"] = data["error"] + store_permission["message"] = data["message"] + else + store_permission["permission_granted"] = true + end + else + store_permission["permission_granted"] = false + store_permission["error"] = "SITE_NOT_REGISTERED" + store_permission["message"] = "Site not registered." + end + store_permission + end + def render_401 render "public/401" end diff --git a/app/models/orbit_store.rb b/app/models/orbit_store.rb new file mode 100644 index 0000000..9c9b64f --- /dev/null +++ b/app/models/orbit_store.rb @@ -0,0 +1,3 @@ +class OrbitStore + URL = "http://store.tp.rulingcom.com" +end \ No newline at end of file diff --git a/app/views/admin/sites/update_manager.erb b/app/views/admin/sites/update_manager.erb index 28434e8..cd8fcbb 100644 --- a/app/views/admin/sites/update_manager.erb +++ b/app/views/admin/sites/update_manager.erb @@ -94,6 +94,25 @@ <%= t("update_manager_.available_updates") %> + <% if !@store_permissions["permission_granted"] %> + + + <% if @store_permissions["message"].size > 30 %> + "><%= @store_permissions["message"][0..17] + "..." %> + + <% else %> + <%= @store_permissions["message"] %> + <% end %> + + <% end %>