From 368fbd2383f013b74b21804a97681529a3bb5362 Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Fri, 30 May 2014 12:52:14 +1000 Subject: [PATCH] Patching up admin redirects to be MOAR UNIVERSAL --- app/controllers/application_controller.rb | 5 +++++ .../spree/admin/base_controller_decorator.rb | 12 ++++++++++++ .../spree/admin/overview_controller_decorator.rb | 13 +------------ .../spree/admin/base_controller_spec.rb | 15 +++++++++++++++ 4 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 spec/controllers/spree/admin/base_controller_spec.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index b9e46d3237..a19f92c918 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -4,6 +4,11 @@ class ApplicationController < ActionController::Base include EnterprisesHelper + def redirect_to(options = {}, response_status = {}) + ::Rails.logger.error("Redirected by #{caller(1).first rescue "unknown"}") + super(options, response_status) + end + def after_sign_in_path_for(resource) if request.referer and referer_path = URI(request.referer).path [main_app.checkout_path].include?(referer_path) ? referer_path : root_path diff --git a/app/controllers/spree/admin/base_controller_decorator.rb b/app/controllers/spree/admin/base_controller_decorator.rb index df7076345f..7199ca4dec 100644 --- a/app/controllers/spree/admin/base_controller_decorator.rb +++ b/app/controllers/spree/admin/base_controller_decorator.rb @@ -11,4 +11,16 @@ Spree::Admin::BaseController.class_eval do authorize! :admin, record authorize! action, record end + + # This is in Spree::Core::ControllerHelpers::Auth + # But you can't easily reopen modules in Ruby + def unauthorized + if try_spree_current_user + flash[:error] = t(:authorization_failure) + redirect_to '/unauthorized' + else + store_location + redirect_to root_path(anchor: "login?after_login=#{request.env['PATH_INFO']}") + end + end end diff --git a/app/controllers/spree/admin/overview_controller_decorator.rb b/app/controllers/spree/admin/overview_controller_decorator.rb index a6142d26c0..a2288dab88 100644 --- a/app/controllers/spree/admin/overview_controller_decorator.rb +++ b/app/controllers/spree/admin/overview_controller_decorator.rb @@ -4,16 +4,5 @@ Spree::Admin::OverviewController.class_eval do @product_count = Spree::Product.active.managed_by(spree_current_user).count @order_cycle_count = OrderCycle.active.managed_by(spree_current_user).count end - - # This is in Spree::Core::ControllerHelpers::Auth - # But you can't easily reopen modules in Ruby - def unauthorized - if try_spree_current_user - flash[:error] = t(:authorization_failure) - redirect_to '/unauthorized' - else - store_location - redirect_to root_path(anchor: "login?after_login=#{spree.admin_path}") - end - end end + diff --git a/spec/controllers/spree/admin/base_controller_spec.rb b/spec/controllers/spree/admin/base_controller_spec.rb new file mode 100644 index 0000000000..0657929739 --- /dev/null +++ b/spec/controllers/spree/admin/base_controller_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe Spree::Admin::BaseController do + controller(Spree::Admin::BaseController) do + def index + before_filter :unauthorized + render text: "" + end + end + + it "redirects to Angular login" do + get :index + response.should redirect_to root_path(anchor: "login?after_login=#{spree.admin_path}") + end +end