From 7c498a573cd84850d8cf98f533d2d959c9a02308 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 6 Jul 2020 17:51:19 +0100 Subject: [PATCH] Make shopfront redirect work when logging out by storing it outside session data --- app/controllers/application_controller.rb | 6 +++++- app/controllers/spree/user_sessions_controller.rb | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 17585a7237..e9cb17480b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -62,11 +62,15 @@ class ApplicationController < ActionController::Base end def after_sign_out_path_for(_resource_or_scope) - session[:shopfront_redirect] || main_app.root_path + shopfront_redirect || main_app.root_path end private + def shopfront_redirect + session[:shopfront_redirect] + end + def restrict_iframes response.headers['X-Frame-Options'] = 'DENY' response.headers['Content-Security-Policy'] = "frame-ancestors 'none'" diff --git a/app/controllers/spree/user_sessions_controller.rb b/app/controllers/spree/user_sessions_controller.rb index df42f622e1..7ff26a3437 100644 --- a/app/controllers/spree/user_sessions_controller.rb +++ b/app/controllers/spree/user_sessions_controller.rb @@ -39,8 +39,18 @@ module Spree end end + def destroy + # Logout will clear session data including shopfront_redirect + # Here we store it before actually logging out so that the redirect works correctly + @shopfront_redirect = session[:shopfront_redirect] + + super + end + private + attr_reader :shopfront_redirect + def accurate_title Spree.t(:login) end