diff --git a/app/controllers/concerns/shopify_app/ensure_authenticated_links.rb b/app/controllers/concerns/shopify_app/ensure_authenticated_links.rb index acddeb537..26cf32e16 100644 --- a/app/controllers/concerns/shopify_app/ensure_authenticated_links.rb +++ b/app/controllers/concerns/shopify_app/ensure_authenticated_links.rb @@ -13,6 +13,10 @@ module EnsureAuthenticatedLinks def redirect_to_splash_page splash_page_path = root_path(return_to: request.fullpath, shop: current_shopify_domain) redirect_to(splash_page_path) + rescue ShopifyApp::LoginProtection::ShopifyDomainNotFound => error + Rails.logger.warn("[ShopifyApp::EnsureAuthenticatedLinks] Redirecting to login: [#{error.class}] "\ + "Could not determine current shop domain") + redirect_to(ShopifyApp.configuration.login_url) end def missing_expected_jwt? diff --git a/test/controllers/concerns/ensure_authenticated_links_test.rb b/test/controllers/concerns/ensure_authenticated_links_test.rb index f6f6231b2..72e13fd3c 100644 --- a/test/controllers/concerns/ensure_authenticated_links_test.rb +++ b/test/controllers/concerns/ensure_authenticated_links_test.rb @@ -55,4 +55,20 @@ def current_shopify_domain assert_response :ok end + + test 'redirects to login page if current shopify domain is not found' do + @controller.expects(:current_shopify_domain).raises(ShopifyApp::LoginProtection::ShopifyDomainNotFound) + expect_redirect_error(ShopifyApp::LoginProtection::ShopifyDomainNotFound, "Could not determine current shop domain") + + get :some_link + + assert_redirected_to ShopifyApp.configuration.login_url + end + + private + + def expect_redirect_error(klass, message) + expected_message = "[ShopifyApp::EnsureAuthenticatedLinks] Redirecting to login: [#{klass}] #{message}" + Rails.logger.expects(:warn).once.with(expected_message) + end end